2009-11-25 4 views
3

java 프로그램에서 jar를 실행하고 stdout을 캡처하려고합니다. 항아리를 실행할 때마다 JVM 시작 비용을 피하려면이 작업을 수행하고 싶습니다. 가장 간단한 방법은 무엇입니까?JarClassLoader를 사용하여 Java 프로그램 내에서 jar를 실행하는 데 도움이됩니다.

자바의 JarClassLoader를 수정하고 시스템 종료를 막기 위해 SecurityManager 하위 클래스를 추가하여 시작했습니다. JarClassLoader는 URLClassLoader의 하위 클래스이며 jar에서 기본 클래스를 조회 한 다음 main 함수를 실행합니다. 하지만 지금은 올바른 인수를 전달하더라도 해당 함수를 실행하려고하면 InvocationTargetExceptions가 표시됩니다. 여기에서 어디로 가야할지 생각하는 사람은 누구입니까?

더 간단한 방법이 있나요?

+0

보안 설정으로 인해 오류가 발생했다고 추측합니다. 스택 추적을 원하십니까? 항아리가 제 3 자 앱입니까? main 메소드를 직접 사용하지 않고 래퍼를 작성할 수 있습니까? – vickirk

+0

aspectj를 사용하여 System.exit을 호출하여 코드가 실행되는 것을 방지하는 코드에 "around advice"를 적용 할 수 있습니다. – vickirk

+0

main() 메소드를 실행하거나 "플러그인"을 실행하기 위해 공통 인터페이스를 사용하고 있습니까? 동적으로로드 된 jar 파일은 추가 라이브러리에 종속됩니까? – mhaller

답변

0

나는 단지 Runtime.exec()을 사용 하겠지만 그 후에는 System.exit()을 예방할 수 없습니다.

관련 문제