从Java运行.exe提供不同的控制台输出,然后直接从Windows运行.exe

时间:2017-06-08 13:04:43

标签: java c# windows eclipse exe

所以这个有点奇怪 - 为什么从Java运行.exe文件提供不同的输出而不是直接运行.exe。

当java在行下面执行时,它会调用我生成的.exe文件,该文件适用于3CX电话系统。

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直接导航到.exe文件并点击orderly-3cx.exe程序执行得很好,给我以下输出。

注意:初始化3cx-orderly连接器'两个输出线。

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类读取此输出。

我已经清理了两个项目(eclipse / visual studio),重新编译了所有类等。仍然是同样的问题

1 个答案:

答案 0 :(得分:1)

可执行文件从与其自身相同的目录中读取配置文件。您需要从该目录运行可执行文件。见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。)