2011-05-05 4 views
2

JAR에서 클래스를 실행하려고합니다. 이 클래스는이 항아리의 유일한 기본 클래스는 아닙니다. 또한이 Jar 파일과 동일한 디렉토리에 보관 된 다른 jar 파일도 필요합니다.classpath가 지정된 명령 줄에서 jar 클래스를 실행하는 방법

실행

mysql-connector-java-5.1.13-bin.jarmyProjImport.jar에 필요하고 com.mycomp.myProj.importer.csv.TestImporter 내가 애 쓰고 클래스 (MYDIR 내 항아리의 모두 Windows 플랫폼을 사용하여 위치하는 디렉토리입니다) 다음과 같이 내가 시도 명령은 달리기.

mydir>java -cp C:\temp\test_myProj\mysql-connector-java-5.1.13-bin.jar;. myProjImport.jar com.mycomp.myProj.importer.csv.TestImporter "C:\Documents and Settings\user\workspace\myProjImport\src\conf\datasource.properties" "C:\temp\apollo_claims_test.txt" 

그리고 여기에 오류가 : "C:\Documents and Settings\user\workspace\myProjImport\src\conf\datasource.properties""C:\temp\apollo_claims_test.txt" 클래스 여기 TestImporter 에 필요한 명령 줄 인수입니다 것은 내가 시도 무엇

Exception in thread "main" java.lang.NoClassDefFoundError: myProjImport/jar 
Caused by: java.lang.ClassNotFoundException: myProjImport.jar 
     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: myProjImport.jar. Program will exit. 
이 가

누군가가 무엇인지 정확한 명령을 말해 주시겠습니까 나는 달릴 까?

시도

답변

8

:.

java -cp C:\temp\test_myProj\mysql-connector-java-5.1.13-bin.jar;myProjImport.jar com.mycomp.myProj.importer.csv.TestImporter "C:\Documents and Settings\user\workspace\myProjImport\src\conf\datasource.properties" "C:\temp\apollo_claims_test.txt "

이 -jar 옵션이 지정되면 당신의 myProjImport.jar

+4

올바른 생각으로 classpath에 myProjImport.jar을 추가하십시오. 그러나 Windows에서는';'separator를 사용하십시오. – ykaganovich

+1

opps이 경우 java -cp C : \ temp \ test_myProj \ mysql-connector-java-5.1.13-bin.jar; myProjImport.jar com.mycomp.myProj.importer.csv.TestImporter "C : \ Documents and Settings \ user \ workspace \ myProjImport \ src \ conf \ datasource.properties ""C : \ temp \ apollo_claims_test.txt –

+1

Karthik과 ykaganovich에게 감사드립니다. – Bhushan

2

같은 direcotry에서이 실행 제공은, 다른 클래스 경로 옵션은 무시됩니다 그래서이 원 't 작업 :

java -jar MyJar.jar -classpath foo.jar 

하지만 MyJar.jar 내에서 META-INF/MANIFEST.MF에 foo.jar에 이름을 배치하면 :

Class-Path: foo.jar 

그런 다음 foo.jar은 MyJar.jar과 동일한 수준, 즉 동일한 디렉토리에서 검색됩니다.

때로는 모든 종속 JAR의 압축을 풀고 해당 내용을 MyJar.jar에 압축합니다. 이런 식으로 종속성이 줄어 듭니다.

+0

"Class-Path mysql-connector-java-5.1.13-bin.jar"줄을 추가 한 후에 "잘못된 또는 잘못된 jarfile myProjImport.jar"오류가 발생했습니다. – Bhushan

+0

콜론이 중요합니다. –

+0

자바를 부수고 싶지는 않지만 왜? 왜? 왜? 병을 실행할 때 추가 클래스 경로를 지정할 수 있습니까? – drevicko

관련 문제