web-dev-qa-db-fra.com

Comment créer un fichier jar avec une structure de paquet?

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

32
user2532663

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).

64
Adam Batkin

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.

12
Brian Agnew

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
9
Daniel

É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. 

7
Vinayak Dornala

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

2
Swati Pisal

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. 

2
Shib

Plus simplement que ci-dessus -

  1. 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.

  2. 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 .

0
ArifMustafa

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

0
shan

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]
0
Sayan Shankhari

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
0
loretoparisi