Question

J'ai essayé d'exécuter un fichier jar - appelons-le test.jar - qui utilise Sybase jconn3.jar sur un système Unix.

J'ai créé un fichier MANIFEST.MF comportant les éléments suivants:

Class-Path: $SYBASE/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar

Ceci donne une erreur ClassNotFoundError. $ SYBASE est la variable système qui pointe vers / opt / sybase13; J'ai également essayé les solutions suivantes:

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 du $ SYBASE / jConnect-6_0 / classes dans le même répertoire que test.jar, je mets à jour mon MANIFEST.MF comme suit:

Class-Path: jconn3.jar commons-net-1.3.0.jar

L'application s'exécute comme prévu.

Maintenant, j'ai pu vérifier que le fichier jconn3.jar fonctionnait en le copiant localement; Mon fichier MANIFEST.MF inclut le chemin d'accès à ma classe principale. Ce n'est donc pas le problème ici.

Selon vous, quel pourrait être le problème? Je regarde cette chose depuis trop longtemps maintenant. Merci!

Était-ce utile?

La solution

Les entrées du chemin de classe sont soit relatives au JAR dans lequel elles sont incorporées (elles fonctionnent), soit à des URL. Pour que vos chemins absolus fonctionnent, vous devez les convertir en URL, par exemple,

.

fichier: / opt / sybase13 /...

Il n'y a pas de mécanisme d'utilisation de variables.

Bien que la spécification JAR ne le dise pas clairement, les URL de schéma de fichier: absolues fonctionnent dans l'attribut class-path.

Autres conseils

Les variables d'environnement ne sont pas lues par le chargeur de classe AFAIK. Cependant, vous pouvez ajouter le fichier jar dans un script de configuration

Selon la spécification, les entrées sont relatives au pot non absolu:

  

Chemin de classe:

     

La valeur de cet attribut spécifie les URL relatives des extensions ou des bibliothèques nécessaires à cette application ou extension. Les URL sont séparées par un ou plusieurs espaces. Le chargeur de classe d’application ou d’extension utilise la valeur de cet attribut pour construire son chemin de recherche interne.

http://java.sun.com /j2se/1.5.0/docs/guide/jar/jar.html # Spécification du manifeste

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top