2010-03-31 4 views
1

J'ai créé le fichier jar qui inclut mon .class, fichier manifeste et les fichiers jar dépendance commeErreur lors de l'exécution fichier 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" est le nom du package contient " GCH_Home_Loan_Data_Cust_Advice_DAO.class »[Cette classe est mon point de départ de ma demande]

Gchreportsautomation/ GCH_Home_Loan_Data_Cust_Advice_DAO.class 

"Bean" est le nom du package contient "GCH_Home_Loan_Data_Cust_Advice_Bean.class"

Bean/ GCH_Home_Loan_Data_Cust_Advice_Bean.class 

"Utils" est le nom du package contient "Utils.class"

Utils/ Utils.class 

et

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 

lors de l'exécution de l'application i eu erreur comme

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

Je sais que c'est à cause de l'erreur-chemin de la classe. comment le rectifier

Si je clique sur mon fichier jar, l'application doit s'exécuter. S'il vous plaît fournir une solution.

Répondre

0

Si cela ne vous dérange pas d'avoir d'autres fichiers jar, votre manifeste peut spécifier quels autres fichiers doivent être dans le chemin de classe. quand le pot est invoqué. Voir:

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

Cela pourrait être plus facile que d'inclure les fichiers des pots dans votre pot.

Si vous ajoutez une ligne Class-Path: dans votre pot qui spécifie l'emplacement des pots (par rapport au pot exécutable, je crois), alors vous devriez être défini.

0

Vous ne pouvez pas inclure des bocaux dans des bocaux sans tirer quelques astuces ClassLoader pour y accéder. Ce que vous pouvez faire est cependant unjar les pots internes et mettre les fichiers contenus dans votre pot principal. Il y a des outils pour vous aider avec ça. Voir aussi: Classpath including JAR within a JAR

Pour faire manuellement, faites ceci:

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 sont les répertoires de niveau supérieur, vous avez obtenu en exécutant la première jar -xf jxl et $ojdbc14-dirs sont les répertoires de niveau supérieur, vous avez obtenu en exécutant jar -xf ojdbc14.jar en omettant META-INF. (Cela ne fonctionnera pas, cependant, si l'un de ces répertoires de niveau supérieur contient des espaces.)

+0

pouvez-vous me dire comment faire celui-là. J'ai besoin d'urgence. s'il vous plaît aider dès que possible. – Manu

+0

mon application est dans MS-WindowsXp comment puis-je utiliser la commande grep. – Manu

+0

la commande ci-dessus est pour l'environnement unix droit? – Manu

Questions connexes