2017-01-17 4 views
-2

cmd 행에서 .jar를 실행하는 프로세스 빌더를 만들려고합니다. 윈도우즈에서 잘 작동하지만 맥이나 리눅스의 작동 방식에 익숙하지 않기 때문에 나는 그들의 cmd 라인을 모른다.Mac OS 및 Linux 용 ProcessBuilder

여기 내 코드입니다 :

ProcessBuilder pb = new ProcessBuilder(new String[] { "java", "-jar", Settings.SAVE_DIR + Settings.SAVE_NAME}); 
      pb.directory(new File(System.getProperty("java.home") + File.separator + "bin")); 
      final Process proc = pb.start(); 

사람은 나 리눅스/맥에 대한 cmd를 라인을 찾아 도와 드릴까요?

+0

'Settings.SAVE_DIR' 및'Settings.SAVE_NAME'의 값은 무엇입니까? – Andreas

+0

@Andreas SAVE_NAME = "name.jar"; \t SAVE_DIR = System.getProperty ("user.home") + File.separator; –

+1

jar 파일이'~/name.jar'에 실제로 있습니까? 어떤 식으로 코드가 작동하지 않습니까? – Andreas

답변

1

오류, 왜 프로세스 작성기를 사용하여 Java 내에서 Java 응용 프로그램을 실행 하시겠습니까?

다른 JAR이 클래스 경로에 있는지 확인하십시오. 그 JAR의 "main method"를 실행한다. 당신이 분리에 대해 걱정한다면; 당신은 여전히 ​​그 일을 위해 특별한 클래스 로더를 사용할 수있다.

그래서, 왜 JVM을 fork 할 것입니까?

실제 질문과 관련하여 간단히 명령을 작성하십시오. 먼저 수동으로 시도하십시오. 내 말은 : linux/mac 시스템에서 쉘을 열고 타입 당신이 염두에두고있는 명령 행; 그리고 당신이 일할 때까지 계속 노력하십시오. 그럼 저것 좀 봐. 플랫폼 독립적 인 방식으로 그 것을 생성하는 가장 쉬운 방법을 확인하십시오.

+0

리플렉션을 사용하여 main 메소드를 실행하면 실행하려는 프로그램과 버그가 있습니다. ClassLoader는 실행중인 프로그램 내부의 모든 리소스를로드하지 않고 loadResource를 재정의하는 것보다 훨씬 많은 작업을 수행해야합니다. –