2012-06-26 5 views
1

내 프로그램을 jar 파일 외부에서 실행할 수는 있지만 배포하고 jar 파일로 실행하려고합니다.항아리가 작동하지 않는 이유는 무엇입니까?

java -classpath .;./libs/mail.jar;./libs/jcommon-1.0.16.jar;./libs/jfreechart-1.0.13.jar;./libs/jxl.jar;./libs/ojdbc5.jar gdsreports/ReportsDriver 

이 내 jar 파일을 패키징하는 방법이다 : 다음의 .class 파일을 실행하기위한

이 명령이 작동

jar -cfvm GDSReports.jar GDSReports.mf gdsreports/* util/* libs/* 

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

Manifest-Version: 1.0 
Main-Class: gdsreports.ReportsDriver 
Created-By: Me 

이것이 내가 항아리를 움직이는 방법입니다.

java -classpath .;./libs/mail.jar;./libs/jcommon-1.0.16.jar;./libs/jfreechart-1.0.13.jar;./libs/jxl.jar;./libs/ojdbc5.jar;./util;./gdsreports -jar GDSReports.jar 

그러나 jar 파일을 실행하면 모든 라이브러리가로드되지 않습니다. 이것은 밖으로 뱉어 것입니다 : 이것은 예상 출력됩니다

Error loading configuration file: config/reportConfig 
Error loading configuration file: config/gdsIds 
Exception in thread "main" java.lang.NoClassDefFoundError: jxl/write/WriteException 
     at util.ReportConfig.setupReports(ReportConfig.java:197) 
     at util.ReportConfig.setup(ReportConfig.java:65) 
     at gdsreports.ReportsDriver.main(ReportsDriver.java:36) 
Caused by: java.lang.ClassNotFoundException: jxl.write.WriteException 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     ... 3 more 

:

Error loading configuration file: config/reportConfig 
Error loading configuration file: config/gdsIds 
------------------------------------- 
Running TimingReport with parameters: 
     Filename: Reports/06-26-2012/TimingRptZL_06-26-2012.xls 
     Brand: ZL 
     Using production database: false 
------------------------------------- 
------------------------------------- 
Exception in thread "main" java.lang.NullPointerException 
     at gdsreports.TimingReport.fillChartData(TimingReport.java:417) 
     at gdsreports.TimingReport.fillReport(TimingReport.java:238) 
     at gdsreports.TimingReport.run(TimingReport.java:131) 
     at gdsreports.ReportsDriver.main(ReportsDriver.java:40) 

내가 무슨 일을하고 있는가?

답변

1

-jar 인수를 사용하면 인수 (및 CLASSPATH 환경 변수)가 무시됩니다.

jar 파일이 다른 라이브러리에 의존하는 경우

, 당신은 두 가지 선택이있다 : 다른 항아리

  1. 다른 항아리를 호출하여 MANIFEST.MF 파일에 Class-Path 헤더를 사용하거나
  2. 의 포장을 풀고 그들을 포함 당신 항아리에.
+0

그러면 잘못하고있는 것입니다. 시도에 대해 설명하는 몇 가지 세부 정보를 질문에 추가하십시오. –

+0

Classpath 대신 Class-Path를 사용해야했습니다. 타이머가 만료되면 수락합니다. – Malfist

관련 문제