Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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进程启动另一个Java进程会显示依赖操作系统的行为_Java - Fatal编程技术网

从正在运行的Java进程启动另一个Java进程会显示依赖操作系统的行为

从正在运行的Java进程启动另一个Java进程会显示依赖操作系统的行为,java,Java,我有一个调用java-cp somejar.jar com.company.mainClass的代码。我使用process builder将其称为。在windows中,它可以正常工作。在linux中,我得到了错误 无法找到或加载主类com.company.mainClass 以下是我的代码示例: ArrayList<String> args = new ArrayList<String>(); args.add(java); args.add("-cp"); args.a

我有一个调用
java-cp somejar.jar com.company.mainClass
的代码。我使用process builder将其称为。在windows中,它可以正常工作。在linux中,我得到了错误

无法找到或加载主类com.company.mainClass

以下是我的代码示例:

ArrayList<String> args = new ArrayList<String>();
args.add(java);
args.add("-cp");
args.add("../dep/jetty-distribution-8.1.1.v20120215/lib/*;../build/jar/somejar.jar");
//args.add("../build/jar/LRM.jar");
args.add("com.company.mainClass");
ProcessBuilder processBuilder = new ProcessBuilder(args);
Process process = processBuilder.start();
ArrayList args=new ArrayList();
add(java);
参数添加(“-cp”);
args.add(“../dep/jetty-distribution-8.1.1.v20120215/lib/*;../build/jar/somejar.jar”);
//args.add(“../build/jar/LRM.jar”);
args.add(“com.company.mainClass”);
ProcessBuilder ProcessBuilder=新的ProcessBuilder(args);
Process=processBuilder.start();

有人知道为什么我在windows和linux中的行为可能不同吗?

linux下类路径(-cp)中的项目必须用冒号分隔:在windows下用分号分隔
。在windows中,路径分隔符是反斜杠而不是斜杠。使用
File.separator
构建类路径,但它也应该使用斜杠。

您使用分号作为路径分隔符,而在unix上它是冒号


改用
File.pathSeparatorChar
依赖代码中的相对路径从来都不是一个好主意。您应该完全限定这些路径,然后重试该测试。我正要编写该测试,但希望确保这是正确的。感谢您的评论。+1用于File.pathSeparator。我曾经使用System.getProperty(“path.separator”),它也有同样的功能,但并不方便。