2012-10-15 44 views
7

Tôi cố gắng để chạy một chương trình java từ một chương trình java sử dụng Runtime.getRuntime như vậy() execjava.io.IOException:. Lỗi = 2, Không có tập tin hoặc thư mục

Code:

String java_home = System.getenv("JAVA_HOME"); 
String[] command = {""+java_home+"/bin/java -cp -cp /sc/sug/p-lib/* Tdesigner -cd /pr -in ing.rsp -out /scratch/sug/ng.pla -ad -stopO "}; 
       try { 
        proc = Runtime.getRuntime().exec(command); 
        proc.waitFor(); 
        int exitCode = proc.exitValue(); 
       } catch (IOException e) { 
         e.printStackTrace(); 
       } catch (InterruptedException e) { 
         e.printStackTrace(); 
       } 

Nó mang lại cho tôi lỗi sau:

java.io.IOException: Cannot run program "/net/sl/sc/jdk6/bin/java -cp /sc/sug/p-lib/* Tdesigner -cd /pr -in ing.rsp -out /scratch/sug/ng.pla -ad -stopOnError ": java.io.IOException: error=2, No such file or directory 
      at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) 
      at java.lang.Runtime.exec(Runtime.java:593) 
      at java.lang.Runtime.exec(Runtime.java:466) 

bất cứ ai có thể giúp tôi để giải quyết vấn đề này. là nó mà tôi cần phải thêm các tập tin jar cá nhân với -cp hơn là thiết lập các thư mục.

Trả lời

2

Nếu bạn sử dụng lệnh exec (String []), bạn phải cung cấp lệnh và các đối số của nó trong các phần tử mảng riêng biệt, không phải tất cả trong một như bạn đã làm.

+0

Chuỗi [] lệnh = {"" + java_home + "/ bin/java -cp/sc/sug/p-lib/* Tdesigner", "-cd", "/ pr", "-in", "ing .rsp "," -out "," /scratch/sug/ng.pla "," - quảng cáo "," -stopO "}; Sửa đổi các lệnh vẫn nhận được cùng một lỗi. :( – user1731553

+1

Bạn vẫn có java -cp /sc/.../* Tdesigner như tất cả một chuỗi, nó cần phải được tách ra.Nếu không thay vì gọi java và đi qua nó các đối số - cp vv, bạn đang cố gắng chạy một chương trình * được gọi là * java -cp/sc/... –

3

Hãy thử loại bỏ các phụ -cp từ mảng chuỗi lệnh và sử dụng thẻ cá nhân trong mảng:

String[] command = { java_home + "/bin/java", "-cp", 
    "/sc/sug/p-lib/*", "Tdesigner", "-cd", "/pr", "-in", "ing.rsp", 
    "-out", "/scratch/sug/ng.pla", "-ad", "-stopO" }; 
0

tôi sử dụng scala. Đây là mã của tôi:

Runtime.getRuntime.exec(Array("/bin/bash", "-c", #your_command)).waitFor() 

Tôi nghĩ rằng thật dễ hiểu đối với những người dùng java.

Các vấn đề liên quan