2010-03-16 3 views
2

Runtime.exec을 사용하여 프로세스를 생성하려고합니다. 내 현재 클래스 경로를 사용하고 싶습니다 : System.getProperty ("java.class.path")Runtime.exec에서 사용할 classpath java를 설정하십시오.

불행히도, 나는 모든 종류의 문제를 겪고 있습니다. 내 Mac에서 작동하면 Windows에서 작동하지 않습니다. 그리고 클래스 패스에 공간이있을 때 내 Mac에서 작동하지 않습니다. 내가 항상 얻는 오류는 ClassDefNotFound입니다. 따라서 클래스 패스를 작성하고 전달하는 방법과 관련이 있습니다. 여기

은 몇 가지 예제 코드입니다 :

그래서
String startClass = "com.test.MyClass" 
String javaHome = System.getProperty("java.home"); 
String javaCmd = javaHome + "/bin/java"; 
String classPath = "-Djava.class.path=" + System.getProperty("java.class.path"); 
String[] commands = new String[]{javaCmd, classPath, startClass}; 
String commandString = StringUtils.join(commands, " "); 
Process process = Runtime.getRuntime().exec(commandString); 

, 어떻게해야 내가 설치 클래스 패스를? 어떤 도움

덕분에

답변

1

당신은 String[]가 아닌 문자열을 사용하는 '간부'의 과부하를 목표로해야합니다. File 클래스의 올바른 경로 구분 기호를 사용하여 Linux에서 콜론을 사용하고 Windows에서 세미콜론을 사용할 수 있습니다.

+0

문자열 배열을 사용하면 prob가 해결됩니다. ProcessBuilder를 직접 사용하여 종료했습니다. –