J'ai ce qui suit dans un fichier Java (MyRtmpClient.Java):
import org.Apache.mina.common.ByteBuffer;
et ByteBuffer
est à l'intérieur d'un fichier JAR (avec la structure de répertoire appropriée bien sûr). Ce fichier jar et les autres dont j'ai besoin se trouvent dans le même répertoire que le fichier .Java.
Ensuite, je compile avec la ligne:
javac -cp ".;*.jar" MyRtmpClient.Java
Mais je reçois l'erreur:
MyRtmpClient.Java:3: package org.Apache.mina.common does not exist
import org.Apache.mina.common.ByteBuffer;
Comment puis-je inclure des fichiers jar dans mon projet?
votre ligne de commande est correcte, mais il y a quelques considérations:
Je suppose que le fichier JAR a la structure de répertoires appropriée comme vous l'avez indiqué.
javac ne comprend pas * .jar dans l'argument classpath. Vous devez spécifier explicitement chaque pot. par exemple.
javac -cp ".;mina.jar" MyRtmpClient.Java
Dans javac JDK 6 et supérieur, vous pouvez utiliser ( noter le manque de .jar ):
javac -cp ".;*" MyRtmpClient.Java
pour citer javac - Java compilateur de langage de programmation
Par commodité, un élément de chemin de classe contenant un nom de base * est considéré comme équivalent à spécifier une liste de tous les fichiers du répertoire avec l'extension .jar ou .JAR.
Par exemple, si le répertoire foo contient a.jar et b.JAR, l'élément de chemin de classe foo/* est développé en A.jar; b.JAR, sauf que l'ordre des fichiers jar n'est pas spécifié. Tous les fichiers jar du répertoire spécifié, même ceux cachés, sont inclus dans la liste. Une entrée classpath consistant simplement en * se développe en une liste de tous les fichiers jar du répertoire courant.
Dans votre cas, je pense que JAVAC ne trouve pas le fichier jars.
S'il vous plaît essayez:
PROJECT_PATH
- lib\a.jar
- src\package\b.Java
cd @PROJECT_PATH
javac -classpath lib\a.jar src\package\b.Java
Si vous avez à votre disposition les utilitaires find
et tr
(par exemple, vous travaillez sous Linux), vous pouvez faire:
javac -cp .:`find * -name "*.jar" | tr "\n" ":"` MyRtmpClient.Java
Tous les fichiers jar dans le répertoire courant et tous ses sous-répertoires seront ajoutés (la commande Shell répertorie tous les jar fichiers et met des deux-points comme séparateurs entre eux).
find * -name "*.jar"
recherche et répertorie tous les fichiers jar dans la hiérarchie dont la racine est le dossier actuel,find
à l'entrée de la commande suivante,tr "\n" ":"
remplace tous les caractères de nouvelle ligne par des caractères deux-points .Probablement la syntaxe ci-dessous fonctionnera sur la commande Windows DOS
javac -cp ".;first.jar;second.jar;third.jar" MyRtmpClient.Java
En Java 8, l'option ".; *" Etc. qui sont mentionnés ci-dessus ne semble pas fonctionner. J'ai essayé et constaté que: javac -cp '<location of jars>/*' MyRtmpClient.Java
travaux:
<location of jar>
peut être/usr/local/classes/* ou/home/developer/MyProject/*