2016-06-03 2 views
0

내 작업은 간단합니다. Java 클래스를 JAR 파일 및 해당 JAR 외부 디렉토리의 종속성 (lib/)으로 터미널에서 JUnit4 테스트를 실행하십시오. . Maven과 Maven 어셈블리 플러그인을 사용하고 있습니다.JUnit4 : lib 디렉토리가없는 JAR 파일 내부에서 테스트 케이스를 실행할 수 없습니다.

내가 예를 들어,이 example.Main 클래스에서 내 main() 방법에, JUnitCore 클래스와 테스트를 실행 :

JUnitCore.runClasses(example.mypackage.MyClass.class); 

그때 나는이 오류가 발생, java -cp my-jar-file.jar example.Main -someArguments로 JAR 파일을 실행할 때 문제가 :

Exception in thread "main" java.lang.NoClassDefFoundError: org/junit/runner/JUnitCore 
     at example.Main.main(Main.java:21) 
Caused by: java.lang.ClassNotFoundException: org.junit.runner.JUnitCore 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     ... 1 more 

내 디렉토리 트리합니다 (JUnit을 의존성, junit-4.11.jar는, JAR 파일 외부에 있습니다)된다

. 
├── my-jar-file.jar 
└── lib 
    ├── commons-beanutils-1.8.0.jar 
    ├── commons-codec-1.10.jar 
    ├── commons-collections-3.2.1.jar 
    ├── commons-io-2.4.jar 
    ├── commons-lang-2.5.jar 
    ├── commons-lang3-3.4.jar 
    ├── commons-logging-1.1.1.jar 
    ├── cssparser-0.9.16.jar 
    ├── ezmorph-1.0.6.jar 
    ├── hamcrest-core-1.3.jar 
    ├── htmlunit-2.18.jar 
    ├── htmlunit-core-js-2.17.jar 
    ├── httpclient-4.5.jar 
    ├── httpcore-4.4.1.jar 
    ├── httpmime-4.5.jar 
    ├── jcl-over-slf4j-1.6.6.jar 
    ├── jetty-io-9.2.12.v20150709.jar 
    ├── jetty-util-9.2.12.v20150709.jar 
    ├── json-lib-2.4-jdk15.jar 
    ├── junit-4.11.jar 
    ├── jwebunit-core-3.3.jar 
    ├── jwebunit-htmlunit-plugin-3.3.jar 
    ├── log4j-1.2.17.jar 
    ├── mysql-connector-java-5.1.6.jar 
    ├── nekohtml-1.9.22.jar 
    ├── regexp-1.3.jar 
    ├── sac-1.3.jar 
    ├── serializer-2.7.2.jar 
    ├── servlet-api-2.5.jar 
    ├── slf4j-api-1.7.5.jar 
    ├── slf4j-log4j12-1.7.5.jar 
    ├── websocket-api-9.2.12.v20150709.jar 
    ├── websocket-client-9.2.12.v20150709.jar 
    ├── websocket-common-9.2.12.v20150709.jar 
    ├── xalan-2.7.2.jar 
    ├── xercesImpl-2.11.0.jar 
    └── xml-apis-1.4.01.jar 

이 문제가 JUnit4입니까? 아니면 뭔가 잘못하고있는거야?

감사합니다.

답변

1

명시 적으로 lib의 내용을 클래스 경로에 추가해야합니다. 시도해보십시오.

java -cp my-jar-file.jar:lib/\* example.Main -someArguments 

유닉스에있는 경우. Windows에서 :;으로 대체하고 가능하면 \을 제거한 후 *; 자세한 내용은 docs을 확인하십시오.

+0

확실! 나는 지금 바보 같이 느껴지고있어 ... 고마워! – gorcajo

관련 문제