【发布时间】:2017-06-08 13:04:43
【问题描述】:
所以这个有点奇怪 - 为什么从 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 并单击 orderly-3cx.exe 程序直接导航到 .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),重新编译了所有类等。仍然是同样的问题
【问题讨论】:
-
您的工作文件夹似乎有所不同。我认为在 Java 应用程序中,您的工作文件夹将比直接运行 exe 高一级。如果程序正在寻找配置文件或其他东西,这可能会影响它。
-
@RB。 .exe 文件正在寻找配置文件,但配置文件与 .exe 文件位于同一位置。 Exe 已经有预定义的配置路径 - 解析到 Exe 自身所在的根目录。
-
但您运行的 .exe 文件与 .exe 文件不在同一目录中。
-
@MaciejCygan 你确定
resolving to root directory where Exe it self resides是真的吗?你确定不是resolving to working directory(更有可能)... -
简单的测试方法。在命令提示符中导航到
3cx-api-application的父文件夹并运行命令3cx-api-application/orderly-3cx.exe。如果您遇到与 Java 相同的错误,那么我几乎可以肯定是对的 :)
标签: java c# windows eclipse exe