Je ne l'habitude d'utiliser la variable $CLASSPATH
globale, la meilleure façon de le faire fonctionner est
java -cp .;/path/to/mysql-connector-java-5.1.10.jar[;<other libs>] pkg.name.MyApplication
Sidenote
Si votre application est exportée dans un fichier jar avec un attribut Main-Class
("fichier exécutable") et commencez avec java -jar myjar.jar
, puis vous devez ajouter toutes les bibliothèques requises au manifeste manifestes, $CLASSPATH
et -cp
sont ignorés dans ce cas. Et voilà pourquoi je ne habituellement pas utiliser l'option -jar
...
Modifier
Pour répondre à votre autre question: Si le répertoire courant a été ajouté au classpath par défaut, l'emplacement à partir duquel la l'application a été démarrée pourrait influencer l'application elle-même.
Imaginez une application dans un pot et une commande de démarrage
java -cp application.jar com.example.Main
Maintenant, nous avons un environnement défini: seul le contenu de application.jar (et les classes jre) sont sur le chemin de classe et une partie de l'application . Si le répertoire en cours était automatiquement ajouté au chemin de classe, tous les fichiers de l'emplacement actuel (et ceux de tous les sous-dossiers) figureraient également sur le chemin de classe, que ce soit ou non. Avec un résultat, que l'application peut fonctionner si elle a démarré à partir du répertoire de base des utilisateurs, mais peut-être pas si elle a démarré à partir du répertoire racine (/
).
'Cependant, d'autres façons de reconnaître que le pot ne fonctionne pas. J'ai essayé de mettre $ CLASSPATH et j'ai essayé d'utiliser '.' répertoire actuel.' s'il vous plaît élaborer ce –
une façon est de définir CLASSPATH droite? Je viens juste de savoir que quand je mets CLASSPATH sous linux, je dois aussi mettre le chemin des fichiers .class dans ce CLASSPATH. Ce qui n'est pas le cas sous Windows. Windows reconnaît le fichier .class dans le répertoire en cours avec le CLASSPATH. la deuxième consiste à utiliser le répertoire en cours sans définir le CLASSPATH. Cependant, selon la réponse ci-dessous, cela ne fonctionne pas non plus. Je dois les mentionner explicitement en utilisant -cp – ernesto