1

我创建了 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:\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如果不采取一些技巧来访问它们,就不能在 jars 中包含 jars 。不过,您可以做的是解压内部 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通过运行 first 获得的顶级目录在哪里,jar -xf jxl以及$ojdbc14-dirs通过jar -xf ojdbc14.jar离开获得的顶级目录在哪里META-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 回答