簡體   English   中英

運行jar文件時出錯

[英]Error while running jar file

我創建了jar文件,其中包括我的.class,清單文件和依賴項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:\\ calc割

  /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文件,則該應用程序必須運行。 請提供解決方案。

如果不提取一些ClassLoader技巧來訪問它們,就不能在jar中包含jar。 但是,您可以做的是解壓內部jar,然后將包含的文件放入主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

其中$jxl-dirs是通過運行第一個jar -xf jxl得到的頂級$ojdbc14-dirs$ojdbc14-dirs是通過運行jar -xf ojdbc14.jar得到的頂級目錄,而沒有META-INF (但是,如果這些頂級目錄中的任何一個包含空格,這將不起作用。)

如果您不介意其他jar文件,清單可以指定調用jar時應在類路徑中的其他jar。 看到:

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

這可能比將jar中的文件包含在jar中要容易。

如果在jar中添加一個Class-Path:行來指定jar的位置(我相信相對於可運行的jar),則應該進行設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM