在eclipse中运行时启动进程会导致错误,而运行导出的jar工作正常

时间:2014-06-10 13:39:03

标签: java eclipse jar path processbuilder

我遇到以下情况时遇到问题:

我想在Java中使用ProcessBuilder运行一个进程。代码,因为它用于在其他计算机上工作,是非常基本的。但是现在,如果我在Eclipse中运行该程序,那个被调用的可执行文件会给我一个错误,只有信息是Path变量。但是,如果我将项目导出为jar文件,程序运行正常!我已经用它运行的计算机检查了所有路径变量,并且在eclipse中运行时都包含在流程构建器中(我检查了ProcessBuilder.environment()),但由于一些奇怪的原因,这只是不起作用。

正如我所说,代码非常基本,如果它被导出为jar,则可以使用:

String [] cmdArr = cmd.split("\\s+");
ProcessBuilder pb = new ProcessBuilder(cmdArr);
Process p;
p = pb.start();
p.waitFor();

此外,如果我从另一个项目调用该项目,结果是相同的行为:不工作,直到导出为jar。

再次:附加所有Path变量。

如果有人能指出正确的方向,我将非常感激。

我的电脑运行的是Windows 7 x64,Eclipse Kepler Service Release 1,JDK 1.8.0_05 x64

通过搜索类似的问题我找不到任何东西,因为包括" path"在搜索中产生许多关于java无法正常工作或为运行设置路径变量的常见问题,另一方面"作为jar而不是在Eclipse中运行" (和类似的搜索)只提供相反的,即在Eclipse中运行的东西,停止作为导出的jar工作。但这些都是相当容易的问题,不幸的是我不能帮助我。

提前致谢

2 个答案:

答案 0 :(得分:0)

您是否正在使用可执行文件的相对路径来启动?

eclipse将使用与jar启动文件夹本身不同的当前目录来启动它。

如果这是原因,您可以通过记录当前目录指向的位置来诊断它:

String current = new java.io.File( "." ).getCanonicalPath();

答案 1 :(得分:0)

所以看起来问题是 - 不幸的是更准确地说: - 可执行文件。这是因为有时在运行导出的版本时会弹出相同的错误消息。我不想相信这一点,因为存在问题中所述的项目运行/ jar运行的差异。因此有一些东西支持这个错误,即使它被证明是无关紧要的。

干杯