2014-03-19 2 views
0

다른 프로그램에서 Java 클래스를 실행해야합니다. java runtime.exec()를 사용하십시오. 내 프로그램과 폴더의 클래스가 다르므로 실행할 수 없습니다. (java -cp "directory"클래스)를 사용했지만 클래스에 가져 오기 파일이있어 filenotfound를 사용할 수 없습니까? 누가 나를 도울 수 있습니까?클래스 java를 실행하는 방법은 runtime.exec()를 사용 하시겠습니까?

프로세스 pro = Runtime.getRuntime(). exec ("java -cp \"E : \ DA_Laptrinhmang \ "NguyenTo"); 여기

는 프로그램입니다 :

import java.io.*; 
import javax.tools.JavaCompiler; 
import javax.tools.ToolProvider; 
public class TestCodeJava { 
    private static void printLines(String name, InputStream ins) throws Exception { 
    String line = null; 
    BufferedReader in = new BufferedReader(new InputStreamReader(ins)); 
    while ((line = in.readLine()) != null) { 
     System.out.println(name + " " + line); 
    } 
    } 
    private static void runProcess(String command) throws Exception { 
    Process pro = Runtime.getRuntime().exec(command); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(pro.getInputStream())); 
    pro.waitFor(); 
    String line = ""; 
    while((line = reader.readLine())!=null) 
    { 
     System.out.println(line); 
    } 
    } 
    private static int toCompile(String fileToCompile) 
    { 
     JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 
     int compilationResult = compiler.run(null, null, null, "-verbose", fileToCompile); 
     return compilationResult; 
    } 
    public static void main(String[] args) { 
    try { 
     if(toCompile("E:\\Folder\\Prime.java")==0) 
     { 
     runProcess("java -cp \"E:\\Folder\" Prime"); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 
} 

    import java.io.*; 
    public class Prime { 
    private static boolean isPrime(int n) 
    { 
     if(n <= 1) return false; 
     if(n == 2 || n == 3) return true; 
     int m = (int) Math.sqrt(n); 
     for(int i = 5; i <= m; i = i + 5) 
      if(n % i == 0 || n % (i+2) == 0) return false; 
     return true; 
    } 
    public static void main(String args[]) throws FileNotFoundException, IOException 
    { 
     File file = new File("INPUT.TXT"); 
     FileInputStream fis = new FileInputStream(file); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(fis)); 
     int n = Integer.parseInt(reader.readLine()); 
     File file2 = new File("OUTPUT.TXT"); 
     FileOutputStream fos = new FileOutputStream(file2); 
     BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fos)); 
     if(isPrime(n)) 
     { 
      writer.write("YES"); 
     }else writer.write("NO"); 
     writer.flush(); 
     writer.close(); 
    } 
} 
여기

오류는 다음과 같습니다 소스 파일 [검색 경로 [완료 42ms를 분석] : C : [\ DA_Laptrinhmang \ NguyenTo.java] 구문 분석 RegularFileObject [E 시작]을 : \ Users \ QUANG HUY \ Documents \ NetBeansProjects \ ChamDiemJava \ build \ classes, C : \ Users \ QUANG HUY \ Documents \ NetBeansProjects \ ChamDiemJava \ src] [클래스 파일 검색 경로 : C : \ Program Files \ Java \ jdk1 .7.0 \ jre \ lib \ resources.jar, C : ₩ Program Files ₩ Java ₩ jdk1.7.0 ₩ jre ₩ lib ₩ rt.jar, C : ₩ Program Files ₩ Java ₩ jdk1.7.0 ₩ jre ₩ lib ₩ sunrsasign.jar , C : \ Program Files \ Java \ jdk1.7.0 \ jre \ lib \ jsse.jar, C : \ Program F C : \ Program Files \ Java \ jdk1.7.0 \ jre \ lib \ charsets.jar, C : \ Program Files \ Java \ jdk1.7.0 \ jre \ C : ₩ Program Files ₩ Java ₩ jdk1.7.0 ₩ jre ₩ lib ₩ ext ₩ dnsns.jar, C : ₩ Program Files ₩ Java ₩ jdk1.7.0 ₩ jre ₩ lib ₩ ext ₩ localedata.jar, Files \ Java \ jdk1.7.0 \ jre \ lib \ ext \ sunec.jar, C : ₩ Program Files ₩ Java ₩ jdk1.7.0 ₩ jre ₩ lib ₩ ext ₩ sunjce_provider.jar, C : ₩ Program Files ₩ Java ₩ jdk1입니다. C : ₩ Program Files ₩ Java ₩ jdk1.7.0 ₩ jre ₩ lib ₩ ext ₩ sunpkcs11.jar, C : ₩ Program Files ₩ Java ₩ jdk1.7.0 ₩ jre ₩ lib ₩ ext ₩ sunmscapi.jar, C : \ Users \ QUANG HUY \ Documents \ NetBeansProjects \ ChamDiemJava \ src] [로드 중 ZipFileIndexFileObject [C : \ Program Files \ META-INF/sym/rt.jar/java/lang/Object.class]] [ZipFileIndexFileObject로드 중 [C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym (META-INF/sym/rt.jar/java/lang/String.class)]] [lo a ZipFileIndexFileObject [C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym (META-INF/sym/rt.jar/java/io/FileNotFoundException.class)]] [로드 중 ZipFileIndexFileObject [C : \ Program Files/Java \ jdk1.7.0 \ lib \ ct.sym (META-INF/sym/rt.jar/java/io/IOException.class)]] [확인 NguyenTo] [로드 중 ZipFileIndexFileObject [C : \ Program Files \ Java/jdk1.7.0 \ lib \ ct.sym (META-INF/sym/rt.jar/java/lang/AutoCloseable.class)]] [ZipFileIndexFileObject로드 중 [C : \ Program Files \ Java \ jdk1.7.0 \ lib (META-INF/sym/rt.jar/java/lang/Math.class)]] [ZipFileIndexFileObject로드 중 [C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym (META- [ZipFileIndexFileObject로드 중 [C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym (META-INF/sym/rt.jar) /java/lang/Throwable.class)]] [로딩 Zip FileIndexFileObject [ZipFileIndexFileObject를로드하는 중 (C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym (META-INF/sym/rt.jar/java/io/File.class)]] [ \ META-INF/sym/rt.jar/java/net/URI.class]] [ZipFileIndexFileObject로드 중 [C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym lib/ct.sym (META-INF/sym/rt.jar/java/io/FileInputStream.class)]] [ZipFileIndexFileObject로드 중 [C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym (META -INF/sym/rt.jar/java/io/FileDescriptor.class)]] [ZipFileIndexFileObject로드 중 [C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym (META-INF/sym/rt. jip/java/io/BufferedReader.class)]] [ZipFileIndexFileObject로드 중 [C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym (META-INF/sym/rt.jar/java/io/InputStreamReader .class)]] [ZipFileIndexFileObject로드 중 [C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym (META-I NF/sym/rt.jar/java/io/InputStream.class)]] [ZipFileIndexFileObject로드 중 [C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym (META-INF/sym/rt.jar /java/io/Reader.class)]] [ZipFileIndexFileObject로드 중 [C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym (META-INF/sym/rt.(META-INF/sym/rt.jar/java/lang/Number) [ZAR 파일/java/lang/Integer.class]]] [ZipFileIndexFileObject로드 중 [C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym (META-INF/sym/rt.jar/java/io/FileOutputStream.class)]] [ZipFileIndexFileObject] 로드 중 ZipFileIndexFileObject [C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym (META-INF/sym/rt.jar/java/io/BufferedWriter.class)]] [ZipFileIndexFileObject [C : \ Program로드 중 Files \ Java \ jdk1.7.0 \ lib \ ct.sym (META-INF/sym/rt.jar/java/io/OutputStreamWriter.class)]] [ZipFileIndexFileObject로드 중 [C : \ Program Files \ Java \ jdk1.7.0 (ZipFileIndexFileObject [C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym (\ lib \ ct.sym (META-INF/sym/rt.jar/java/io/OutputStream.class)]] ) META-INF/sym/rt.jar/java/io/Writer.class)]] [ZipFileIndexFileObject로드 중 [C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym (META-INF/sym/rt.jar/java/lang/Error.class)]] [ 프로그램 Files \ Java \ jdk1.7.0 \ lib \ ct.sym (META-INF/sym/rt.jar/java/lang/RuntimeException.class)]] [ZipFileIndexFileObject [C : \ Program Files \ Java \ jdk1을로드 중입니다. 7.0 \ lib \ ct.sym (META-INF/sym/rt.jar/java/lang/NumberFormatException.class)]] [ZipFileIndexFileObject로드 중 [C : \ Program Files \ Java \ jdk1.7.0 \ lib \ ct.sym [총 441ms] BUILD SUCCESSFUL (총 시간 : 2 초) [총 : 442ms] [정규식 : E : \ DA_Laptrinhmang \)

+1

그리고 당신이 얻고있는 무슨 오류? 왜 작동하지 않는거야? 응용 프로그램과 동일한 컨텍스트의 명령 줄에서 실행 해 보았습니까? – MadProgrammer

+0

cmd를 사용하여 E 디스크에서 코드 java를 실행 해보겠습니다.하지만 내 클래스에 가져 오기 파일이 있기 때문에 실행할 수 없습니다. 내가 runtime.exect()와 다른 programe에 의해 exect 코드 자바 필요합니다. – Student

+0

클래스 패스 (부적절하게 이스케이프 된)의 일부인 것으로 보이지만 메인 클래스 나 jar 파일은 보이지 않습니다. –

답변

1

이 작품은 나를 위해

package mypackage; 

import java.io.IOException; 

public class RunSomeJava { 

    public static void main(String[] args) throws IOException { 
     Process pro = Runtime.getRuntime().exec("java -cp E:\\workspaceIndigo2\\StackOverflow\\bin mypackage.SomeOtherProgram"); 
    } 

} 

package mypackage; 

import java.io.File; 
import java.io.IOException; 

public class SomeOtherProgram { 

    public static void main(String[] args) throws IOException { 
     File f = new File(System.currentTimeMillis()+".txt"); 
     f.createNewFile(); 
    } 

} 
+0

하지만 파일에서 데이터를 읽은 다음 오류 filenotfound – Student

+0

질문을 수정했으면 다른 질문이 – Leo

+0

이것은 좋지 않았습니다. Mrs.Student – Leo