AX2012 Call external java program
将Java程序导出为可执行的JAR文件,并且在AX 客户端的服务器上安装并且配置JDK环境。
在AX调用之前请确认JDK安装成功,打开CMD使用 java -jar xxx.jar 尝试运行
打开AOT, 新建一个Job
static void test(Args _args) {
System.Diagnostics.Process process; process; System.Diagnostics.ProcessStartInfo psi; System.IO.Directory directory; System.IO.StreamReader streamReader; str pathlocal; // jar文件所在目录 str jarName; // "optaplanner.jar" jar包名字 str msg; ; try { // Assert CLRInterop permission new InteropPermission(InteropKind::ClrInterop).assert(); pathlocal = '\\\\Server\\AX.SharedFolder\\FolderName'; jarName = '\\xxxx.jar'; process = new System.Diagnostics.Process(); psi = new System.Diagnostics.ProcessStartInfo("java", " -jar " + "\"" + pathlocal + "\"" + jarName); psi.set_FileName("C:\Program Files\Java\jdk1.8.0_211\bin\java.exe"); // Java.exe的地址必须设定,不设定在class run on server或者通过RD Web运行的时候会出错 psi.set_WorkingDirectory(pathlocal); // 设定初始目录 psi.set_CreateNoWindow(true); // 不显示窗口 psi.set_UseShellExecute(false); // 不通过操作系统shell启动进程 psi.set_RedirectStandardError(true); // 重定向错误 psi.set_RedirectStandardInput(true); // 重定向输入 psi.set_RedirectStandardOutput(true); // 重定向输出 process.set_StartInfo(psi); // 设置process的执行参数 msg += "开始执行xxxx主程序\r\n"; msg += "---以下是xxxx主程序的运行日志---" + "\r\n"; process.Start(); streamReader = process.get_StandardOutput(); msg += streamReader.ReadToEnd(); msg += "xxxx主程序已退出"; process.WaitForExit(); // 等待进程结束 process.Close(); info(strFmt("%1", msg)); } catch { Throw error("异常处理!"); } }