1

.class、マニフェストファイル、依存関係jarファイルを含むjarファイルを作成しました。

jar cfmv custadvicejar.jar mymanifest.txt  Gchreportsautomation Bean Utils 
jxl.jar ojdbc14.jar

どこ

  custadvicejar.jar - is my jar file name

  mymanifest.txt contains
  Main-Class: Gchreportsautomation.GCH_Home_Loan_Data_Cust_Advice_DAO

「Gchreportsautomation」は、「GCH_Home_Loan_Data_Cust_Advice_DAO.class」を含むパッケージ名です[このクラスは、私のアプリケーションの開始点です]

  Gchreportsautomation/ GCH_Home_Loan_Data_Cust_Advice_DAO.class

「Bean」は、「GCH_Home_Loan_Data_Cust_Advice_Bean.class」を含むパッケージ名です。

  Bean/ GCH_Home_Loan_Data_Cust_Advice_Bean.class

「Utils」は、「Utils.class」を含むパッケージ名です。

  Utils/ Utils.class

  jxl.jar and ojdbc14.jar are jar files required for my application which i kept 
  in parent directory of the .class files like

D:\ Excalcreation

  /Gchreportsautomation/ GCH_Home_Loan_Data_Cust_Advice_DAO.class
  /Bean/ GCH_Home_Loan_Data_Cust_Advice_Bean.class
  /Utils/ Utils.class
  /jxl.jar
  /ojdbc.jar

アプリケーションの実行中に、次のようなエラーが発生しました

Caused by: java.lang.ClassNotFoundException: jxl.format.CellFormat

これはクラスパスエラーが原因であることがわかります。それを修正する方法。

jarファイルをクリックすると、アプリケーションを実行する必要があります。解決策を提供してください。

4

2 に答える 2

0

ClassLoaderそれらにアクセスするためのいくつかのトリックを引っ張らない限り、jar に jar を含めることはできません。ただし、できることは、内部の jar を unjar し、含まれているファイルをメインの jar に入れることです。それを支援するツールがあります。関連項目: JAR 内に JAR を含むクラスパス

手動で行うには、次のようにします。

jar -xf jxl.jar
jar -xf ojdbc14.jar
jxl-dirs=`jar -tf jxl.jar | sed -e 's/\/.*//' | sort | uniq | grep -v META-INF`
ojdbc14-dirs=`jar -tf ojdbc14.jar | sed -e 's/\/.*//' | sort | uniq | grep -v META-INF`
jar cfmv custadvicejar.jar mymanifest.txt  Gchreportsautomation Bean Utils $jxl-dirs $ojdbc14-dirs

where$jxl-dirsは、最初に実行して取得したjar -xf jxl最上位ディレクトリであり、 は、除外し$ojdbc14-dirsて実行して取得した最上位ディレクトリです。(ただし、これらの最上位ディレクトリのいずれかにスペースが含まれている場合、これは機能しません。)jar -xf ojdbc14.jarMETA-INF

于 2010-03-31T15:16:52.900 に答える
0

他の jar ファイルを配置してもかまわない場合は、マニフェストで、jar が呼び出されたときにクラスパスにある必要がある他の jar を指定できます。見る:

http://java.sun.com/docs/books/tutorial/deployment/jar/downman.html

これは、jar のファイルを jar に含めるよりも簡単かもしれません。

jar の場所を指定する Class-Path: 行を jar に追加する場合 (実行可能な jar に関連していると思います)、設定する必要があります。

于 2010-03-31T17:18:45.557 に答える