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選項爲類文件所在的目錄提供路徑)

相關問題