2012-12-27 6 views
1

좋아,이 질문은 매우 일반적이며 매우 간단한 질문이지만, 다소 이상한 상황이 있습니다. (인터넷상의 다른 곳에서 해결책을 찾을 수 없었던 상황). 그래서, 나는 프로그래밍 방식으로 JavaCompiler을 통해 컴파일하는 소스 코드를 가지고있다. 그런 다음 런타임으로 컴파일 된 코드를 실행하려고합니다. (. 즉, Runtime.getRuntime().exec(String[])입니다)하지만, 내가 말했듯이 코드를 실행하려고 할 때, 나는 문제의 소스 코드는이 기본 모델을 다음과 Could not find or load main class. 얻을 :메인 클래스를 찾을 수 없거나로드 할 수 없습니다. 비정상적인 상황에서

package compiledCode; 
public class Compiled 
{ 
    public Compiled(){} 
    public static void main(String[] args) 
    { 
     System.out.println("Hello!! ;D"); 
    } 
} 

하더라도 그 코드가 실행되지 않습니다. 나는 여전히 같은 오류가 발생합니다. 귀하의 도움에 미리 감사드립니다. :)

* 편집 :

  1. 나는 코드라는 문자열에서 위에서 언급 한 코드로 시작 다음과 같이 내가 세부에 걸릴 단계이다. 그런 다음 File 객체 (이 경우에는 Compiled.java)를 만듭니다.

  2. 나는 테스트 한 광산 사용자 정의 메소드를 사용하여 파일을 컴파일하고 (선택적으로 클래스 객체를 얻을 수 있음) , 특정 이유로, 나는 이것을 위해 그렇게 할 수 없다.) .class 파일로. (JavaCompiler API 사용)

  3. 그런 다음 Runtime.getRuntime.exec(new String[]{"java",[location of .class file]});을 사용하여 실행합니다.

이 시점에서 오류가 발생합니다.

내가 사용하고 정확한 코드는 요청에 따라,

ClassFileHelper.toClass(src, "C:/Users/Steven/Desktop/ /Eclipse/Workspace/RoccedGame/ServiceCoder", "ServiceCoder"); 
System.out.println("java "+src.getAbsolutePath().substring(0,src.getAbsolutePath().lastIndexOf(".java"))+".class"); 
final Process p = Runtime.getRuntime().exec(new String[]{"java",src.getAbsolutePath().substring(0,src.getAbsolutePath().lastIndexOf(".java"))+".class"}); 

3 줄의 문자열 조작이 조금 지저분이 ..하지만 나는 그것이 작동하는지 확인하기 위해 트리플이-확인했습니다 - 그것은 그렇다. 에 대한 코드를 보려면 toClass() 비트, here으로 이동하십시오.

+0

이 명령에 생성 된 .class 파일의 올바른 경로를 제공해야합니다. – Juvanis

+1

당신은 확실합니까 ?? 그것은 내 PC에서 실행. :/ – Ravi

+3

@ steven-fontaine 코드를 실행하고 코드를 컴파일하는 방법에 대한 정확한 단계를 제공 할 수 있습니까? – eis

답변

3

Runtime.exec()에 올바른 매개 변수를 전달하지 않습니다.

컴파일 된 클래스 파일의 실제 위치를 전달합니다. 그러나 클래스 이름을 전달해야하며 클래스가 패키지에 있으면 -classpath 매개 변수로 패키지 계층 구조의 루트를 전달해야합니다.

이것은 JDK 문서에 설명되어 있습니다 : http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html

관련 문제