2016-11-07 65 views
-3
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); 
    } 
} 

产生java.io.IOException:不能运行程序 “的Java com.alter.change.on.demand.jobs.HelloWorld2”:错误= 2,没有这样的文件或目录

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: Cannot run program "java com.alter.change.on.demand.jobs.HelloWorld2": error=2, No such file or directory

at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)

at com.alter.change.on.demand.jobs.HelloWorld.main(HelloWorld.java:22)

Caused by: java.io.IOException: error=2, No such file or directory

at java.lang.UNIXProcess.forkAndExec(Native Method)

at java.lang.UNIXProcess.(UNIXProcess.java:248)

at java.lang.ProcessImpl.start(ProcessImpl.java:134)

at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)

... 1 more

Exception in thread "main" java.lang.NullPointerException

at com.alter.change.on.demand.jobs.HelloWorld.main(HelloWorld.java:28)

+0

您可能正在从错误的文件夹编译它,因为它位于包中。删除行'package com.alter.change.on.demand.jobs;' –

+0

错误:当包com.alter.change.on.demand.jobs;找不到或加载主类HelloWorld;被删除 –

+0

这些都在同一个文件中?你如何运行?你需要做'javac HelloWorld.java'然后'java HelloWorld'。 –

回答

0
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选项为类文件所在的目录提供路径)

相关问题