java.io.IOException:无法运行程序“java com.alter.change.on.demand.jobs.HelloWorld2”:error = 2,没有这样的文件或目录

时间:2016-11-07 02:54:47

标签: java

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)

1 个答案:

答案 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选项来提供类文件所在目录的路径。