J'ai essayé d'exécuter un fichier jar - appelons-le test.jar - qui utilise Sybase jconn3.jar sur un système Unix.Java Manifest.mf classpath issues
J'ai créé un fichier MANIFEST.MF qui a les éléments suivants:
Class-Path: $SYBASE/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar
Cela donne une ClassNotFoundError. $ SYBASE est la variable système qui pointe vers/opt/sybase13; J'ai aussi essayé ce qui suit:
Class-Path: /opt/sybase13/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar
et
Class-Path: opt/sybase13/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar
Cependant, si je copie le fichier jconn3.jar des SYBASE $/jConnect-6_0/classes le même répertoire que test. jar, et mettre à jour mon MANIFEST.MF pour lire comme suit:
Class-Path: jconn3.jar commons-net-1.3.0.jar
L'application s'exécute comme prévu.
Maintenant, j'ai été en mesure de vérifier le fichier jconn3.jar fonctionne en le copiant localement; mon fichier MANIFEST.MF inclut le chemin vers ma Main-Class, donc ce n'est pas en cause ici.
Selon vous, quel pourrait être le problème? Je regarde cette chose depuis trop longtemps maintenant. Merci!
Je suppose que ce JAR contient votre pilote de base de données; Il est assez courant qu'une application crée son propre java.net.URLClassLoader pour récupérer des classes de pilotes dans une classe spécifiée via une configuration d'application. – erickson
Pourquoi ne pas simplement ajouter le fichier jar au script de démarrage de l'application. La plupart des serveurs d'applications ont une partie spéciale où placer ces jars supplémentaires. – OscarRyz