J'ai une structure de dossier
/com/cdy/ws/a.class files
/com/cdy/ws/b.class files
/com/cdy/ws/c.class files
Lorsque j'exécute la commande suivante “jar cvf asd.jar * .class”, jar contient tous les fichiers de classe . Mais la structure des dossiers n'est pas générée. Tous les fichiers de classe doivent être sous «com.cdy/ws» mais toutes les classes sont au même niveau que META-INF . Quelqu'un peut-il me dire quelle est la commande pour générer la structure de package?
Merci
Vous devez commencer à créer le fichier JAR à l'emplacement root des fichiers.
Ainsi, par exemple:
jar cvf program.jar -C path/to/classes .
Cela suppose que path/to/classes
contient le répertoire com
.
Pour votre information, de nos jours, il est relativement rare que la plupart des gens utilisent directement la commande jar
, car ils utiliseront un outil de construction tel que Ant ou Maven pour s’occuper de cela (et d’autres ). Cela vaut la peine de permettre à un de ces outils de s’occuper de tous les aspects de votre construction, et il est encore plus facile avec un IDE bien d’aider à écrire le build.xml
(Ant) ou le pom.xml
(Maven).
Tu veux
$ jar cvf asd.jar .
pour spécifier le répertoire (par exemple .
) dans jar
Cela maintiendra votre structure de dossier dans le fichier jar.
Dans le répertoire contenant le dossier com
:
$ jar cvf asd.jar com
added manifest
adding: com/(in = 0) (out= 0)(stored 0%)
adding: com/cdy/(in = 0) (out= 0)(stored 0%)
adding: com/cdy/ws/(in = 0) (out= 0)(stored 0%)
adding: com/cdy/ws/a.class(in = 0) (out= 0)(stored 0%)
adding: com/cdy/ws/b.class(in = 0) (out= 0)(stored 0%)
adding: com/cdy/ws/c.class(in = 0) (out= 0)(stored 0%)
$ jar -tf asd.jar
META-INF/
META-INF/MANIFEST.MF
com/
com/cdy/
com/cdy/ws/
com/cdy/ws/a.class
com/cdy/ws/b.class
com/cdy/ws/c.class
Étape 1: Accédez au répertoire dans lequel les classes sont conservées à l'aide de la commande Invite (ou de l'invite Linux Shell).
Comme pour Project.C:/workspace/MyProj/bin/classess/com/test/*.class
Allez dans le répertoire bin en utilisant la commande:
cd C:/workspace/MyProj/bin
Étape 2: Utilisez la commande ci-dessous pour générer un fichier jar.
jar cvf helloworld.jar com\test\hello\Hello.class com\test\orld\HelloWorld.class
En utilisant la commande ci-dessus, les classes seront placées dans un fichier jar dans une structure de répertoires.
Votre nom de dossier spécifié doit être sur le chemin C:\Program Files\Java\jdk1.7.0_02\bin
Nom de dossier contenant des fichiers de classe.
C:\Program Files\Java\jdk1.7.0_02\bin>jar cvf program1.jar Foldername
Maintenant, programme1.jar créera dans C:\Program Files\Java\jdk1.7.0_02\bin chemin
ce code ci-dessous m'a donné une réponse correcte
jar cvf MyJar.jar *.properties lib/*.jar -C bin .
il a ajouté le fichier de propriétés (log4j), il a ajouté les fichiers jar dans lib. et ensuite il est allé à l'intérieur de bin pour récupérer les fichiers de classe avec le paquet.
Plus simplement que ci-dessus -
Conservez le contenu de votre package Java dans un répertoire et assurez-vous qu'il ne contient rien à l'exception de vos packages Java et de leurs classes Java correspondantes.
Ouvrir l'invite de commande (si Windows), accédez au chemin du répertoire contenant comme ci-dessous
C:> cd "C:\Utilisateurs\UtilisateurABC\Téléchargements\Dossier actuel"
C:\Utilisateurs\UtilisateurABC\Téléchargements\Dossier actuel>jar cvf hello-world-1.0.1.jar .
Supposez la structure de votre dossier de projet comme suit:
c:\test\classes\com\test\awt\Example.class
c:\test\classes\manifest.txt
Vous pouvez lancer la commande suivante pour créer un “Example.jar.
jar -cvfm Example.jar manifest.txt avec/test/awt/*. class
Par exemple :
aller à la structure de dossiers à partir de l'invite de commande "cd C:\test\classes"
C:\test\classes> jar -cvfm Example.jar manifeste.txt avec/test/awt/*. Class
C’est ce que je fais dans un fichier .sh, considérons install.sh
#!/bin/sh
echo Installing
cd .../Your_Project_Directory/com/cdy/ws/
jar cfe X.jar Main *.class
cd .../Your_Project_Directory/
ln -s .../Your_Project_Directory/com/cdy/ws/X.jar X
echo Testing...
Java -jar X
echo You are Good to Go...Use hapily
#etc.
Créer un fichier JAR exécutable dans le répertoire Class et créer un SymLink où vous le souhaitez.
Exécutez-le en utilisant,
$ sh install.sh[ENTER]
$ Java -jar X[ENTER]
Pour éviter d’ajouter des fichiers sources .Java
à votre paquet, vous devriez faire
cd src/
jar cvf mylib.jar com/**/*.class
Supposons que la structure de votre projet ressemble à
myproject/
src/
com/
mycompany/
mainClass.Java
mainClass.class