package com.alter.change.on.demand.jobs;
import java.io.File;
import java.io.IOException;
public class HelloWorld {
public static void main(String args[]){
for(int i = 0; i<5 ; i++){
System.out.println("Helloo");
}
Process process = null;
ProcessBuilder pb = new ProcessBuilder(new String[]{"java" + " " + "com.alter.change.on.demand.jobs.HelloWorld2"});
try {
process = pb.start();
} catch (IOException e) {
e.printStackTrace();
}
try {
process.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
int exitVal = process.exitValue();
System.out.println(exitVal);
}
}
和
package com.alter.change.on.demand.jobs;
public class HelloWorld2 {
public static void main(String[] args){
System.out.println("Main 2..testing");
}
}
java.io.IOException:无法运行程序“java com.alter.change.on.demand.jobs.HelloWorld2”:error = 2,没有这样的文件或目录
在java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at com.alter.change.on.demand.jobs.HelloWorld.main(HelloWorld.java:22)
引起:java.io.IOException:error = 2,没有这样的文件或目录
at java.lang.UNIXProcess.forkAndExec(Native Method)
在java.lang.UNIXProcess。(UNIXProcess.java:248)
在java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 1更多
线程“main”中的异常java.lang.NullPointerException
at com.alter.change.on.demand.jobs.HelloWorld.main(HelloWorld.java:28)
答案 0 :(得分:3)
package com.alter.change.on.demand.jobs;
import java.io.IOException;
public class HelloWorld {
public static void main(String args[]){
for(int i = 0; i<5 ; i++){
System.out.println("Helloo");
}
Process process = null;
ProcessBuilder pb = new ProcessBuilder(new String[]{"java","com.alter.change.on.demand.jobs.HelloWorld2"});
try {
process = pb.start();
} catch (IOException e) {
e.printStackTrace();
}
try {
process.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
int exitVal = process.exitValue();
System.out.println(exitVal);
}
}
- 使用逗号(,)分隔ProcessBuilder中传递的值对我有用,并确保从包含类文件的目录执行java命令。 - 从命令行执行时,必须包含包名,后跟类名,例如在这种情况下: java com.alter.change.on.demand.jobs.HelloWorld (请记住它是当前目录包含的类文件,或者应该使用-cp选项来提供类文件所在目录的路径。