Error while running jar file
I have created jar file which includes my .class , manifest file and dependency jar files like
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" is the package name contains "GCH_Home_Loan_Data_Cust_Advice_DAO.class" [This class is my starting point of my application]
"Bean" is the package name contains "GCH_Home_Loan_Data_Cust_Advice_Bean.class"
"Utils" is the package name contains "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
/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
while running the application i got error like
Caused by: java.lang.ClassNotFoundException: jxl.format.CellFormat
i know this is because of class-path error. how to rectify it.
If i click my jar file ,the application has to run. please provide solution.
If you don't mind having the other jar files around, your manifest can specify which other jars should be in the classpath when the jar is invoked. See:
This might be easier than including the files from the jars in your jar.
If you add a Class-Path: line in your jar that specifies the location of the jars (relative to the the runnable jar, I believe), then you should be set.
You cannot include jars in jars without pulling some ClassLoader tricks to access them. What you can do though is unjar the internal jars and put the contained files into your main jar. There are tools to help you with that. See also: Classpath including JAR within a JAR
To do that manually, do this:
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 are the top-level directories you got by running the first jar -xf jxl and $ojdbc14-dirs are the top-level directories you got by running jar -xf ojdbc14.jar leaving out META-INF. (This will not work, though, if any one of these top-level directories contains spaces.)