2011-07-05 5 views
0

현재 모든 라이브러리가 포함 된 Jar 파일을 만들려고합니다. 내가 한 일,이 같은 폴더를 만들었습니다자바 - 포함 된 라이브러리 및 기본 클래스를 찾을 수 없습니다.

내 주요 클래스 (패키지 eancopy 이내) process 이름

내 매니페스트는 다음과 같이이다

eancopy (which contain all my classes) 
lib (containing all my libraries : mongo, jedis...) 
META-INF/MANIFEST.MF 

:

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.8.2 
Class-Path: lib\commons-pool-1.5.6.jar lib\jedis-2.0.0.jar lib\mongo-2.6.3.jar 
Created-By: 1.6.0_24-b07 (Sun Microsystems Inc.) 
Main-Class: eancopy.process 

내가 가진

jar cvmf META-INF/MANIFEST.MF EANcopy.jar eancopy/*.class lib/*.jar 

내 문제 : execu

Exception in thread "main" java.lang.NoClassDefFoundError: com/mongodb/DBObject 
Caused by: java.lang.ClassNotFoundException: com.mongodb.DBObject 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
Could not find the main class: eancopy.process. Program will exit. 

어떤 아이디어 : 그것은 내가 메시지를 내가 JAR를 생성 한 자리에 있지만 다른 곳에서 실행될 때 팅 java -jar EANcopy.jar로 JAR, 그것은 작동? 감사합니다

+2

답변을받는 방법을 알고 계십니까? – abalogh

답변

0

이 예외는 당신에게 문제의 원인을 보여줍니다 스레드에서

예외를 "주"java.lang.NoClassDefFoundError가이 : COM/MongoDB를/DBOBJECT

당신은 이러한 libs와 lib\commons-pool-1.5.6.jar lib\jedis-2.0.0.jar lib\mongo-2.6.3.jar를 지정하지 않은 당신의 CLASSPATH 환경 변수, 다른 곳에서 실행될 때 실패하는 이유.

+0

그것은 MANIFEST -> Class-Path에 지정되어 있습니다. 호환성을 위해 CLASSPATH 환경 변수를 사용하지 않기를 희망합니다. – kozher

+0

네,하지만이 모든 병들은'EANCopy.jar'에 포함되어 있습니까? –

0

클래스 경로 속성은 jar 파일에 포함 된 라이브러리가 아닌 jar 파일과 함께있는 라이브러리 만 찾습니다. 이 thread에 따르면 특수 클래스 로더를 사용하거나 항아리 안에 포함 된 라이브러리를 폭발시키는 방법을 사용해야합니다.

관련 문제