我有这个调用java -cp somejar.jar com.company.mainClass
的代码。我正在使用流程构建器调用它。在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();
任何人都知道为什么我可能会在Windows和Linux中获得不同的行为?
答案 0 :(得分:3)
您使用分号作为路径分隔符,而在unix上它是冒号。
使用File.pathSeparatorChar
代替
答案 1 :(得分:2)
linux下的类路径(-cp)中的项必须由冒号:
分隔,并在窗口下用分号;
分隔。在Windows路径中,分隔符是反斜杠而不是斜杠。使用File.separator
构建类路径,尽管它也应该使用斜杠。