을 사용하여 Java
응용 프로그램 내에서 JUnit 테스트를 시작하려고합니다.-cp 및 jar 위치를 사용하여 Java ProcessBuilder 클래스를 찾을 수 없거나로드 할 수 없습니다.
동일한 명령을 문제없이 명령 줄에서 실행할 수 있습니다. ProcessBuilder에서 실행할 때 항아리의 절대 경로를 사용해야합니까, 아니면 상대 경로를 사용할 수 있습니까? 내 응용 프로그램
의 JUnit 라이브러리는 lib 폴더
응용 프로그램/lib 디렉토리/JUnit을-4.12.jar
에 내부 실행 명령 줄java -cp .;lib/junit-4.12.jar org.junit.runner.JUnitCore com.test.Test1
에서 실행
ProcessBuilder builder = new ProcessBuilder(new String[] {"java", "-cp", ".;lib/junit-4.12.jar", "com.test.Test1"}); Process process = builder.start(); process.waitFor(); debug("process ended"); debug("process.exitValue() = " + process.exitValue());
출력 :
process ended
process.exitValue() = 1
Error: Could not find or load main class org.junit.runner.JUnitCore
하나 이상의 "one.jar; two.jar"가 실패하지만 "one.jar"가 실패하면 "ProcessBuilder"문에서 하나 이상의 libarary를 -cp에 사용할 수 있습니까? 작동합니다. – ALM
또 다른 시스템 속성'System.getProperty ("path.separator");를 사용하여 올바른 구분 문자를 찾을 수 있습니다. 이들은 OS 의존적입니다. 주제에 대한 기타 게시물을 참조하십시오 : http://stackoverflow.com/questions/4528438/classpath-does-not-work-under-linux – mazaneicha