运行 来自 Java 的 .exe 给出不同的控制台输出,然后 运行 .exe 直接来自 Windows
Running .exe from Java gives different console output then running .exe directly from Windows
所以这个有点奇怪 - 为什么来自 Java 的 运行 .exe 文件给出不同的输出,而不是直接 运行 .exe。
当java在行下面执行时,它会调用一个我构建的可与3CX phone系统一起使用的.exe文件。
p = Runtime.getRuntime().exec("3cx-api-application/orderly-3cx.exe");
当从 java/eclipse/jar 文件执行代码时,会打印以下错误。
INFO: 3CX Initialization Started
Jun 08, 2017 1:58:19 PM com.orderlysoftware.threecx.Orderly3CXConnector threeCXinit
INFO: Sending: Initializing 3cx-Orderly Connector
Jun 08, 2017 1:58:28 PM com.orderlysoftware.threecx.Orderly3CXConnector threeCXinit
SEVERE: SEVERE:
Jun 08, 2017 1:58:28 PM com.orderlysoftware.threecx.Orderly3CXConnector threeCXinit
SEVERE: SEVERE: Unhandled Exception: TCX.Configuration.Exceptions.PhoneSystemException: ConfigServer is not connected
Jun 08, 2017 1:58:28 PM com.orderlysoftware.threecx.Orderly3CXConnector threeCXinit
SEVERE: SEVERE: at TCX.Configuration.PhoneSystem.Connect()
现在,当我通过进入 3cx-api-application 并单击 orderly-3cx.exe 程序直接导航到 .exe 文件时,程序执行得很好,给我以下输出。
注意: 两个输出上的 'initializing 3cx-orderly connector' 行。
Initializing 3cx-Orderly Connector
Program Initialized
Initialize Monitor
*0 NOT REGISTEREDVMB(0/0)
a length: 0
*1 NOT REGISTEREDVMB(0/0)
a length: 0
更奇怪的是,这曾经在 java 中有效,但现在无效。所有 .exe 文件应该做的是连接到 3CX API 并将一些输出打印到控制台,然后应该由 java class.
读取此输出
我已经清理了两个项目(eclipse/visual studio),重新编译了所有 classes 等。仍然是同样的问题
可执行文件从与其自身相同的目录中读取配置文件。您需要 运行 该目录中的可执行文件。参见 http://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html#exec-java.lang.String-java.lang.String:A-java.io.File-
尝试:
p = Runtime.getRuntime().exec("orderly-3cx.exe", null, "3cx-api-application");
(P.S。Oracle 的 Javadoc 建议新应用程序应使用 ProcessBuilder 而不是 Runtime。)
所以这个有点奇怪 - 为什么来自 Java 的 运行 .exe 文件给出不同的输出,而不是直接 运行 .exe。
当java在行下面执行时,它会调用一个我构建的可与3CX phone系统一起使用的.exe文件。
p = Runtime.getRuntime().exec("3cx-api-application/orderly-3cx.exe");
当从 java/eclipse/jar 文件执行代码时,会打印以下错误。
INFO: 3CX Initialization Started
Jun 08, 2017 1:58:19 PM com.orderlysoftware.threecx.Orderly3CXConnector threeCXinit
INFO: Sending: Initializing 3cx-Orderly Connector
Jun 08, 2017 1:58:28 PM com.orderlysoftware.threecx.Orderly3CXConnector threeCXinit
SEVERE: SEVERE:
Jun 08, 2017 1:58:28 PM com.orderlysoftware.threecx.Orderly3CXConnector threeCXinit
SEVERE: SEVERE: Unhandled Exception: TCX.Configuration.Exceptions.PhoneSystemException: ConfigServer is not connected
Jun 08, 2017 1:58:28 PM com.orderlysoftware.threecx.Orderly3CXConnector threeCXinit
SEVERE: SEVERE: at TCX.Configuration.PhoneSystem.Connect()
现在,当我通过进入 3cx-api-application 并单击 orderly-3cx.exe 程序直接导航到 .exe 文件时,程序执行得很好,给我以下输出。
注意: 两个输出上的 'initializing 3cx-orderly connector' 行。
Initializing 3cx-Orderly Connector
Program Initialized
Initialize Monitor
*0 NOT REGISTEREDVMB(0/0)
a length: 0
*1 NOT REGISTEREDVMB(0/0)
a length: 0
更奇怪的是,这曾经在 java 中有效,但现在无效。所有 .exe 文件应该做的是连接到 3CX API 并将一些输出打印到控制台,然后应该由 java class.
读取此输出我已经清理了两个项目(eclipse/visual studio),重新编译了所有 classes 等。仍然是同样的问题
可执行文件从与其自身相同的目录中读取配置文件。您需要 运行 该目录中的可执行文件。参见 http://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html#exec-java.lang.String-java.lang.String:A-java.io.File-
尝试:
p = Runtime.getRuntime().exec("orderly-3cx.exe", null, "3cx-api-application");
(P.S。Oracle 的 Javadoc 建议新应用程序应使用 ProcessBuilder 而不是 Runtime。)