J'écrivais un programme simple en utilisant une application Java (pas une application qui a des projets, mais une application au sein d'un projet; .Java) qui possède un seul cadre. Les deux fichiers sont .Java, donc je Impossible d’écrire un manifeste requis par le fichier JAR. MyApp.Java commence comme une classe avec package, puis importe la classe publique MyApp {et a une fonction principale, mais c’est toujours. Java! Je l’écris dans JDeveloper 11g si aide ...
Des idées comment faire un JAR à partir de ces fichiers?
Ouvrez une invite de commande.
Allez dans le répertoire où vous avez vos fichiers .Java
Créer une construction de répertoire
Exécuter Java compilation à partir de la ligne de commande
javac -d ./build *.Java
s'il n'y a pas d'erreur, dans le répertoire de construction, vous devriez avoir votre arbre de classe
déplacez vers le répertoire de construction et faites un
jar cvf YourJar.jar *
Pour ajouter des commutateurs de ligne de commande de jar de vérification de manifeste
Simplement avec la ligne de commande:
javac MyApp.Java
jar -cf myJar.jar MyApp.class
Les IDE sûrs évitent d'utiliser un terminal en ligne de commande
Ok c'est la solution que j'aurais aimé trouver, à la place, je l'écris:
Commencez par créer la structure de répertoires correspondant au package défini pour le fichier .Java. S'il s'agit de mon.super.application, créez le répertoire "my" et, à l'intérieur, "super" et à l'intérieur, le fichier .Java "App.Java".
puis en ligne de commande:
javac -cp /path/to/lib1.jar:/path/to/lib2.jar path/to/my/super/App.Java
Notez que ce qui précède inclura plusieurs bibliothèques, si sous Windows, utilisez "," pour séparer plusieurs fichiers, sinon sous GNU/Linux, utilisez ":" Pour créer un fichier jar
jar -cvfe App.jar App my/app/
ce qui précède créera l'application avec son manifeste correspondant en indiquant l'application comme classe principale.
L'inclusion des bibliothèques requises dans le fichier jar n'est pas possible avec les paramètres Java ou jar de la ligne de commande.
Vous pouvez plutôt:
<target name="-post-jar"> <!-- Empty placeholder for easier customization. --> <!-- You can override this target in the ../build.xml file. --> <jar jarfile="${dist.jar}" update="true"> <zipfileset src="${dist.jar}" includes="**/*.class" /> <zipfileset src="${file.reference.iText-1.0.8.jar}" includes="**/*"/> <zipfileset src="${file.reference.itextpdf-3.2.1.jar}" includes="**/*"/> </jar> </target>
les noms de fichier.référence se trouvent dans le fichier project.properties après avoir ajouté les bibliothèques à l'EDI Netbeans.
Vous voudrez souvent spécifier un manifeste, comme ceci:
jar -cvfm myJar.jar myManifest.txt myApp.class
Ce qui se lit comme suit: "Créer un nomJarFilename bavarois NomFichierManifest", suivi des fichiers que vous souhaitez inclure. Verbose signifie imprimer des messages sur ce qu'il fait.
Notez que le nom du fichier manifeste que vous fournissez peut être n'importe quoi, car jar
le renommera automatiquement et le placera dans le bon répertoire du fichier jar.
Cela peut être fait sans terminal, directement depuis IDE. Netbeans, par exemple.
Voici une autre manière élégante de faire ceci:
$ ls | grep .Java | xargs -I {} javac {} ; jar -cf myJar.jar *.class
Ce qui va récupérer tous les fichiers .Java (ls | grep .Java
) à partir de votre répertoire actuel et compilez-les dans .class (xargs -I {} javac {}
), puis créez le fichier jar à partir des classes précédemment compilées (jar -cf myJar.jar *.class
).