2012-02-09 2 views
2

실행 가능한 jar를 생성하고 다른 java 프로그램의 프로세스 빌더를 사용하여 실행했습니다.ProcessBuilder 디버깅

public class SomeClass { 
public static void main(String[] args) { 
    Process p = null; 
    ProcessBuilder pb = new ProcessBuilder("java", "-jar", "src.jar"); 
    pb.directory(new File("/Users/vivek/servers/azkaban-0.10/TestApp/src")); 
    try { 
     p = pb.start(); 
    } catch(Exception ex) { 
     ex.printStackTrace(); 
    } 
} 

}

지금 일식에서 src.jar를 디버깅하기 위해 노력하고있어 - 여기 내 코드입니다. 디버그 구성에서 프로젝트 src를 외부 프로젝트로 제공했지만 내 중단 점을 전혀 초과하지 않습니다. 이런 식으로 디버그 환경을 설정하는 방법이 있습니까?

+0

위와 같이 Someclass 코드를 이클립스에서 호출하고 OS에서 제공하는 별도의 JVM에서 Eclipse 외부에서 호출되는 jar 파일에서 Java 소스를 디버그하려고합니다. 이 결말이 너에게 잘 보이지 않는다. src가 보유한 Java 코드에 로깅 코드를 추가하는 것이 좋다고 생각합니다. –

+0

너무 늦어서 반갑습니다. 나는 그 문제를 해결할 수 있었다. 새 ProcessBuilder를 만들 때 명령에 Xdebug 옵션을 추가하고 연결할 포트를 지정하기 만하면됩니다. 그런 다음 Eclipse에서 디버그 구성을 작성하고 해당 포트에 연결하여 디버그하십시오. –

답변

4

좋아, 그래서 나는이 일을 할 수 있었다. 불행히도, 나는 이것을 위해 사용 된 샘플 프로젝트를 찾을 수 없으므로 최선을 설명하려고 노력할 것입니다. 위에서이 줄을 고려 -

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005", "src.jar"); 

가 그럼 난, 이클립스 디버그 환경을 만들어 5005로 포트를 설정하고 -

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "src.jar"); 

내가 할 필요가이 모든 매개 변수로 Xdebug는 추가했다 항아리의 소스 코드에 몇 개의 중단 점을 설정하면 효과가있었습니다!

+0

Eclipse에서이 문제를 설정하려는 사람은 다음 [예제] (http://www.ibm.com/developerworks/opensource/library/os-eclipse-javadebug/)를 참조하십시오. – Felix

0

이클립스에서 디버그 항아리 패키지의 방법

  1. 프로젝트의 참조 된 lib 디렉토리에있는 항아리를 선택합니다.
  2. 자바 소스 첨부 파일에서 소스 코드의 위치를 ​​지정할 수 있습니다.
  3. 프로젝트에서 jar 파일의 일부 클래스를 호출하십시오.
  4. 중단 점을 추가하고 프로젝트를 디버그하십시오.

이 경우 jar 파일과 프로젝트가 동일한 프로세스에서 실행 중입니다.

ProcessBuilder로 jar 파일을 실행하면 jar 파일은 프로젝트와 독립적으로 다른 프로세스에서 실행됩니다. 물론 eclipse와 독립적입니다. 즉, jar 파일은 'java -jar'을 입력하는 방식으로 실행됩니다. jarfile '명령 줄에서.

+0

마지막 메모는 이전에 작성한 내 메모와 일치합니다. 다시 말하지만, 최선의 방법은이 방법을 디버깅하는 것을 잊어 버리고 대신 로깅을 통해 프로그램 상태를 얻는 것입니다. –

관련 문제