2011-05-28 5 views
14

Dans Tomcat, je souhaite utiliser un jar dans une application Web. Le fichier jar existera en dehors du répertoire Tomcat.Ajout de jar externe dans Tomcat ClassPath

Pour inclure le fichier jar dans classpath tomcat, j'ai modifié les TomcatHome/conf/catalina.properties pour inclure le chemin absolu de mon fichier jar comme,

shared.loader=D:\jaa\MyJarFile.jar 

selon la suggestion donnée dans le lien,

http://www.mulesoft.com/tomcat-classpath 

Mais il jette l'erreur,

java.lang.NoClassDefFoundError 

J'ai aussi essayé,

shared.loader=D:\jaa\*.jar 

shared.loader=file:\\D:\jaa\MyJarFile.jar 

Aucun d'entre eux semblent fonctionner :(

Si j'essayez de placer le pot dans tomcat/lib, il semble fonctionner. Mais je ne suis pas autorisé à le faire.

S'il vous plaît, aidez-moi cette question que j'ai mise en œuvre la semaine prochaine ..

+0

Avez-vous essayé: fichier ': // path/to/foldername/jarname.jar' Votre syntaxe est différente – Cratylus

+0

Tomcat soulève IllegalArgumentsException quand j'utilise slash (/), tandis que le démarrage du serveur. Donc je dois utiliser backslash (fichier: \\ D: \ jaa \ PatMS.jar) – Sathesh

+0

Copie possible de [Comment ajouter des bibliothèques JAR au projet WAR sans faire face à java.lang.ClassNotFoundException? Chemin de classe vs chemin de construction vs /WEB-INF/lib](http://stackoverflow.com/questions/6792197/how-to-add-jar-libraries-to-war-project-without-facing-java-lang-classnotfoundex –

Répondre

10

Je me figurai comment ajouter le classpath pour tomcat. Au lieu de modifier catalina.properties, il suffit de créer un "setenv.sh" dans le répertoire bin Tomcat avec le classpath,

Exemple,

CLASSPATH=D:\jaa\MyJarFile.jar 

Je viens de vérifier le catalina.sh dans Tomcat/bin et ceux-ci La variable classpath sera définie lors de la définition du bootstrap en tant que classpath.

+1

merci de partager la solution – jabal

+2

Il est à noter que la variable d'environnement 'CLASSPATH' est explicitement * unset * par' catalina.sh', donc vous devez utiliser edit 'setenv.sh' pour la définir. – z0r

0

Je me surprends copient JARs supplémentaires, qui devrait être disponible pour tous les contextes et devrait à cet effet aller dans le chargeur de racine, dans le répertoire suivant:

C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib 

Mais ce possible que si vous avez accès à ce répertoire , ce qui pourrait ne pas être le cas pour tous les FAI. Au moins, vous pouvez le faire à la maison.

Bye

+1

Cela rend le fichier jar disponible pour toutes les applications Web déployées sur le serveur. La question mentionne pour une application web. – Sathesh

+0

Pour l'application Web, placez-la dans WEB-INF/lib du contexte de votre application Web. Il sera automatiquement chargé par le chargeur de classe de contexte. –