从正在运行的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”),它也有同样的功能,但并不方便。