web-dev-qa-db-fra.com

Produire un fichier jar exécutable dans NetBeans

J'utilise NetBeans 6.5 et, pour une raison quelconque, il ne produira pas de fichier jar exécutable "prêt à l'emploi".

J'ai défini mon projet pour qu'il soit le projet principal, la classe principale définie dans le menu "exécuter" des propriétés du projet et cela fonctionne parfaitement lorsque j'appuie sur F6 pour l'exécuter.

J'ai consulté le fichier manifeste et il n'a en effet pas défini la classe principale et omis les dépendances de la bibliothèque.



Est-ce que je manque quelque chose? Existe-t-il un moyen (autre que la modification manuelle du fichier manifeste) de produire des fichiers jar exécutables?

EDIT: oui, j'ai essayé de nettoyer et de reconstruire et il a produit le jar dans le dossier dist, toujours avec le même manifeste.mf

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 10.0-b23 (Sun Microsystems Inc.)
19
Dani

Je viens d'avoir le même problème dans NetBeans 7.2.1 avec un projet d'application Java Maven. Modifiez le fichier pom.xml pour inclure le maven Assembly plugin avec un Tweak à la réponse de myrho (doit référencer le descripteur prédéfini "jar-with-dependencies"):

<plugin>
    <artifactId>maven-Assembly-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
            <manifest>
                <mainClass>your.app.MainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
    <executions>
        <execution>
            <id>make-Assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Une autre méthode consiste à créer un projet d'application Java dans NetBeans qui n'utilise pas Maven. Sélectionnez Fichier -> Propriétés du projet -> Construire -> Conditionnement et cochez la case "Copier les bibliothèques dépendantes". 

7
rarchibald

Si vous utilisez le plugin maven Assembly et que vous voulez construire un fichier jar exécutable avec des dépendances, vous devez ajouter cette partie à la configuration de la section maven-Assembly-plugin dans votre pom.xml:

<plugin>
  <artifactId>maven-Assembly-plugin</artifactId>
  <configuration>
    <!-- ... -->
    <archive>
      <manifest>
        <mainClass>your.app.SampleClass</mainClass>
      </manifest>
    </archive>
  </configuration>
</plugin>

Source: Utilisation du plug-in Maven Assembly

6
myrho

Essaye ça:

  1. Faites un clic droit sur votre projet dans le panneau "Projets", sélectionnez "Propriétés".

  2. Cliquez sur "Exécuter" dans la nouvelle fenêtre.

  3. Modifiez le champ "Main Class:" (cliquez sur Browse).

De cette manière, vous sélectionnerez la classe principale qui constitue le point d’entrée de votre application et le manifeste sera créé correctement.

5
kv.

Très simple, les fichiers .jar et .jad sont là dans le dossier dist

Je cherchais aussi une réponse et je l’ai obtenue de http://forums.netbeans.org/ptopic3465.html

Résolu :)

4
SMUsamaShah
2
John Ellinwood

Peut-être avez-vous créé Projet Java avec sources existantes au lieu de Application Java

J'ai eu un problème similaire et la création d'une nouvelle application Java, puis la copie manuelle des fichiers src ont résolu le problème.

1
Xaerxess

J'ai eu l'expérience que le processus de construction est différent, En fonction du type de projet.

Je suppose que vous avez créé le projet "Java Class Library".

Il suffit donc de créer un projet "Application Java", puis de lui fusionner toutes les classes.

Ensuite, Netbeans va pas remplacer, mais améliorer le "manifest.mf" dans le fichier JAR.

Bien sûr, c'est un bogue stupide de Netbeans. Bien sûr, il devrait être possible d’ajouter des classes principales Après.

EDIT: S'il vous plaît voir mon autre réponse. C'est plus facile.

1

Si vous nettoyez et construisez votre projet, vous devez créer le fichier jar dans le répertoire "dist".

Il convient de créer le fichier manifest.mf au niveau supérieur du répertoire de votre projet.

1
marktucks

En fait, je suis tombé sur cette page après avoir rencontré le même problème. J'ai modifié le fichier manifest.mf mais les modifications ne sont pas apparues dans le fichier jar MANIFEST.MF. J'ai trouvé le problème que j'avais et je pensais transmettre l'information au cas où elle serait pertinente.

Ce que je faisais mal, c’était que je n’avais pas le projet sur lequel je travaillais en tant que projet principal. Ainsi, lors de la modification du manifeste, j’étais en train de compiler le mauvais projet. 

Donc, je suppose que le résumé de l’histoire vous a permis de vérifier si vous avez sélectionné le bon projet pour le fichier manifest.mf que vous modifiez?

1
Jeff

Pour forcer manuellement package creation avec NetBeans IDE 8.0.2 ...

  1. Dans le navigateur de projet, développez votre <projet> et cliquez avec le bouton droit de la souris sur Project Files/pom.xml.
  2. Cliquez sur Run Maven/Goals
  3. Tapez "package" dans le champ Objectifs
  4. Cliquez sur OK

La fenêtre de sortie montrera ensuite (sur Mac) ...

Building jar: /Users/<username>/NetBeansProjects/<project>/target/<project>-1.0-SNAPSHOT.jar
0
Ken Lin

Allez à la vue Fichiers . Créez un fichier manifest.mf dans le répertoire racine.

/project_folder
    build.xml
    manifest.mf(edit here)
    /dist
    /src
    /test
    /build
0
l_39217_l

Des informations intéressantes pourraient être ici:

http://wiki.netbeans.org/FaqNoMainClass

0

Une meilleure solution:

Editez nbproject/project.properties et ajoutez l'entrée :

manifest.file=manifest.mf

manifest.mf devrait être à la racine du projet et ne contenir que:

Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build

Travaux. Testé.

0

Ok, avec neatbean, vous pouvez effectuer les étapes suivantes: 1. Faites un clic droit nommez le projet choisissez élément Définissez la configuration et choisissez Personnalisez
2. Choisissez Run and notice Main Class
3. Choisissez Parcourir et définissez la classe si vous souhaitez exécuter. Après avoir cliqué sur ok.
4. Terminer.

0
vuongluis

Dans la version 7.3, il suffit d'activer Propriétés/Construire/Compiler/Copier les bibliothèques dépendantes et la classe principale (selon la cible sélectionnée) sera ajoutée au fichier manifeste lors de la construction.

0
Samuel Ventura

Une autre approche consiste entièrement à développer, exécuter des tests unitaires, etc. dans NetBeans, puis à utiliser un script maven ou ant pour effectuer votre "vraie" construction. Il semble que ces types d’outils de construction vous donnent plus de contrôle sur la façon dont les choses sont construites et qu’elles vous permettent également d’automatiser les générations.

Pour maven, vous pouvez facilement ajouter des entrées au manifeste à l’aide du plugin maven jar:

http://maven.Apache.org/plugins/maven-jar-plugin/

0
James Kingsbery

Étrange en effet, il devrait le faire hors de la boîte, y compris le classpath. 

Avez-vous mis à jour à partir d'une version précédente? Lors de la mise à niveau, NB met à niveau les fichiers du projet, mais parfois, cette migration n’est pas bien effectuée et ce genre de scénario s’affiche. Fermez simplement le projet, renommez le répertoire nbproject en nbproject_old et créez un nouveau projet -> projet Java avec des sources existantes. Définissez à nouveau la classe principale, ajoutez des dépendances et réessayez.

0
Rogier