2012-05-07 2 views
1

Fondamentalement, deux questions:Java - où placer des JAR tiers et définir classpath sous Linux

1) Où devraient aller les JAR de mes tiers? Actuellement, je les mets immoralement dans le paquet de ma demande, ce qui est immoral par exemple. parce que les librairies tierces sont de niveau inférieur et devraient pouvoir dépendre de toutes mes applications.

2) Où classpath doit-il être défini? Les tutoriels que j'ai vus donnent l'impression d'être une variable globale, mais je ne le sais pas car cela dépend du projet, ie le projet X a besoin des bibliothèques L et M mais le projet Y a besoin des bibliothèques M et N. Je suis en train de créer un fichier "cp" pour chaque application mais je me demandais s'il y avait un style plus canonique.Z

+1

Vous feriez mieux de poser 2 questions dans 2 discussions, parce que vous devriez accepter la meilleure réponse correcte. Maintenant, si vous marquez une réponse correcte pour q1 comme acceptée, vous pourriez ne plus avoir de réponses. En regardant la question, personne ne saura pourquoi vous avez accepté une réponse - q1 ou q2 répondu ou peut-être les deux? –

Répondre

7

Jars vous mis en

JAVA_HOME/jre/lib/ext 

ne doivent pas nécessairement être spécifié dans le classpath. C'est donc utile pour les bibliothèques que vous utilisez souvent comme apache-commons pour eample.

Les bibliothèques rarement utilisées sont mieux appelées avec le classpath.

La définition du chemin de classe dépend de votre utilisation et du fait que vous travaillez sur une machine utilisateur unique, qu'il s'agisse d'un client ou d'un serveur. Beaucoup d'applications Java sont faites pour les serveurs, où vous avez un seul chemin de classe du tout.

+0

Sur mon CentOS 7.0 c'était '/ usr/lib/jvm/jre/lib/ext /' –

+2

Alors que cela fonctionne - c'est une ** très ** mauvaise idée. Voir [link] (http://stackoverflow.com/questions/2068961/is-putting-external-jars-in-the-java-home-lib-ext-directory-a-bad-thing) pour une discussion. –

1

1> Dans notre projet, nous avons fait un projet 'tiers' qui ne contient que le bocaux de tiers. L'application principale est dans un projet séparé qui fait juste référence à un projet tiers.

Donc, répondre à la première question peut être, créer un projet distinct appelé «tiers» et y mettre tous vos jars.

2> En général, sous Linux, vous faites des variables shell et les pointer vers vos pots/fichiers de classe comme ci-dessous: -

# export GWT_HOME=/opt/smartgwt.jar 

Ensuite, lorsque vous invoquez Java, peut faire quelque chose comme ceci: -

# java -cp $GWT_HOME <your_main_class> 
Questions connexes