Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ProcessBuilder可以';无法访问相对文件夹位置_Java_Cmd_Processbuilder - Fatal编程技术网

Java ProcessBuilder可以';无法访问相对文件夹位置

Java ProcessBuilder可以';无法访问相对文件夹位置,java,cmd,processbuilder,Java,Cmd,Processbuilder,我正在尝试使用ProcessBuilder从Java代码执行第三方JAR。此JAR要求您在执行此JAR时必须位于安装目录,否则它将无法工作。下面是此第三方JAR的文件夹结构: C:\\Program Files\\MSG MCE Software I10 C:\\Program Files\\MSG MCE Software I10\\jre C:\\Program Files\\MSG MCE Software I10\\jre\\bin 以下是我正在使用的代码: String cmdLin

我正在尝试使用
ProcessBuilder
从Java代码执行第三方JAR。此JAR要求您在执行此JAR时必须位于安装目录,否则它将无法工作。下面是此第三方JAR的文件夹结构:

C:\\Program Files\\MSG MCE Software I10
C:\\Program Files\\MSG MCE Software I10\\jre
C:\\Program Files\\MSG MCE Software I10\\jre\\bin
以下是我正在使用的代码:

String cmdLine = "\"jre\\bin\\java\" -Xms512m -Xmx1024m -cp \"C:\\Program Files\\MSG MCE Software I10\\msgmce.jar;C:\\Program Files\\MSG MCE Software I10\\*:.\" com.mmm.his.msgmce.Main -i \"C:\\drginput\\"+inFileName+"\" -o \"C:\\drgoutput\\"+outFileName+"\" ";
ProcessBuilder builder = new ProcessBuilder( "cmd.exe", "/c", "cd \"C:\\Program Files\\MSG MCE Software I10\"&&"+cmdLine);
System.out.println("cmdLine->"+cmdLine); 
Process p = builder.start();
如您所见,我最初尝试导航到安装目录
“C:\\Program Files\\MSG MCE Software I10\”
,然后尝试执行java可执行文件

问题是,我得到一个
“系统找不到指定的文件”
,因为它找不到
“jre/bin/java”
的相对路径

现在这可以在一台机器上工作,但不能在另一台机器上工作。创建
ProcessBuilder
并调用
cmd.exe
时,我将导航到安装主目录,因此我应该能够访问
jre/bin/java
文件


有人知道为什么这可以在一台机器上工作,而不能在另一台机器上工作吗?

好的,我知道了。在它工作的计算机上,Eclipse、Tomcat等所有程序都安装在同一个C驱动器上,但在另一台计算机上,Eclipse安装在不同的驱动器上


第三方JAR安装在C驱动器上,我的程序运行在Eclipse上,但在D驱动器上。由于某种原因,将ProcessBuilder中的目录更改为C驱动器不起作用。不确定这是否是出于安全原因对ProcessBuilder的限制,但在单个驱动器上安装所有组件都有效

您确定
C:\Program Files\MSG MCE Software I10\
存在吗?是的,它存在。刚刚意识到Eclipse和JAR在不同的驱动器上。似乎将ProcessBuilder中的目录从D更改为C不起作用。出于安全原因,可能存在Java限制?不确定。仅供参考:您不能使用
cd
更换驱动器。要将驱动器从
D:\
更改为
C:\
,必须在执行
cd
命令之前使用
C:
。您的命令可能类似于以下命令:
“C:&cd\”C:\\Program Files\\MSG MCE Software I10\”&&“+cmdLine