2010-05-22 10 views
7

Un peu d'aide de votre part ... J'essayais de convertir un simple programme java en pot, mais rien ne semble s'être passé. J'ai 2 fichiers: Tester.java, Tester.Class. J'ai ensuite utilisé cette ligne de commande:Comment convertir un programme Java en pot?

pot

-cvf Tester.jar Tester.class

Le fichier .jar a été créé, mais rien ne semble fonctionner. Qu'est-ce qui m'a manqué?

+2

@Matthew, je suppose que c'est probablement ce que veut OP. (Définissez la classe principale et vous serez en mesure d'exécuter le programme directement à partir du pot.) Votre commentaire fonctionnerait bien comme une réponse réelle. – Jonik

Répondre

13

Pour exécuter le programme dans le fichier jar que vous avez créé, vous devrez exécuter

java -cp Tester.jar your.package.Main 

Une façon plus commode d'exécuter le pot est de pouvoir faire

java -jar Tester.jar 

Cela, cependant , requiert que vous spécifiez la classe principale dans un fichier manifeste, qui doit être inclus dans le fichier jar:

  • Mettre

    Manifest-Version: 1.2 
    Main-Class: your.package.Main 
    

    dans manifest.txt

  • Et pour créer le pot:

    jar cvfm Tester.jar manifest.txt Tester.class 
    
+1

+1, explication très claire et concise des bases – Jonik

+0

@aioobe Si je n'utilise qu'une classe simple qui n'est pas dans un paquet, comment puis-je faire? – pharaon450

+0

Idem dans ma réponse, sans 'your.package.' je suppose. – aioobe

6

Comme Matthew Flaschen a commentéanswered, vous aurez besoin d'avoir un " fichier manifeste "dans votre pot, et qui devrait contenir Main-Class en-tête indiquant quelle est la classe principale dans le pot à exec ute. The answer by aioobe illustre parfaitement la manière la plus simple de le faire.

Mais au lieu de le faire toujours « manuellement », je vous recommande de jeter un oeil à un outil de construction , tels que Apache Ant (ou Maven, mais c'est probablement un peu plus difficile à démarrer avec), qui sont très couramment utilisés pour automatiser ce genre de séquences de construction.

Avec Ant, vous allez pouvoir créer "buildfile" (le plus souvent nommé build.xml) comme ceci:

<project name="Tester"> 
    <target name="build" 
      description="Compiles the code and packages it in a jar."> 

     <javac srcdir="src" destdir="classes" source="1.6" target="1.6"/> 

     <jar destfile="Tester.jar"> 
      <fileset dir="classes"/> 
      <manifest> 
       <attribute name="Main-Class" value="com.example.Tester"/> 
      </manifest> 
     </jar> 
    </target> 
</project> 

Maintenant, appelant ant build compilerait votre code et emballez-le dans "Tester.jar", qui contiendra également le type correct d'en-tête de manifeste, de sorte que vous pouvez l'exécuter avec java -jar Tester.jar. (Notez que cet exemple suppose que vos sources sont dans le répertoire "src", par rapport à l'endroit où vous exécutez la commande.Vous aurez également besoin d'avoir installé Ant bien sûr.)

Si vous décidez d'essayer Ant, son official manual sera extrêmement utile (en particulier la liste des tâches Ant « » qui montre par exemple quelles sont les options que vous pouvez donner à tâches spécifiques telles que javac ou jar).

2

Je suggère d'utiliser des IDE tels que Netbeans, Eclipse, IntelliJ IDEA et de vous concentrer sur votre programmation (compiler votre programme par clic).

Questions connexes