2010-08-16 4 views
1

J'ai le code Java suivant. Il fait ce qu'il est censé faire, mais j'ai des problèmes pour créer un fichier jar.Problème Création d'un fichier Java Jar exécutable

import java.io.*; 
public class openfile{ 
    public static void main(String argv[]) { 
     try { 
       String line; 
       Process p = Runtime.getRuntime().exec 
       ("c:\\Users\\user\\Desktop\\"+ "shares.bat /A"); 
       BufferedReader input = 
       new BufferedReader 
       (new InputStreamReader(p.getInputStream())); 
       input.close(); 
       } 
      catch (Exception err) { 
        err.printStackTrace(); 
       } 
    } 
} 

Il compile sans problème, Il ne pose aucun problème lors de l'utilisation de java openfile. Le problème se pose lorsque je tente de créer un fichier jar en utilisant les commandes suivantes:

jar cf MyJar.jar manifest.txt openfile.java openfile.class 

Cependant lorsque je tente de lancer le pot en utilisant

java -jar MyJar.jar 

je reçois le message d'erreur suivant:

Failed to load Main-Class manifest attribute from MyJar.jar 

Le texte de manifest.txt est la suivante:

Main-Class: openfile 

Une idée de ce que je fais mal?

Répondre

2

J'ai eu le problème je crois.

Dans votre fichier manifest.txt

Le texte de manifest.txt est comme suit:

Main-Class: openfile 

Vous devez fournir un saut de ligne après la dernière ligne

Donc il suffit de taper Entrer (< -) (retour chariot) après cette ligne.

Main-Class: openfile 

Se reporter à la documentation this du soleil. voici un extrait.

Avertissement: Le fichier texte doit se terminer par une nouvelle ligne ou retour chariot . La dernière ligne ne sera pas analysée correctement si ne se termine pas par une nouvelle ligne ou par le retour chariot .

J'ai vérifié avec ceci et cela fonctionne. J'espère que cela aide.

+0

Bonjour, Merci de votre réponse. J'ai essayé de toujours avoir la même erreur. J'ai commencé à partir de zéro. Supprimé l'ancien manifeste.txt, tapé la ligne dans un nouveau fichier et appuyez sur le bouton Entrée (de sorte que le curseur est sur une nouvelle ligne), enregistré le fichier et créé un nouveau fichier jar. N'a fait aucune différence. –

+0

Je pense que vous n'avez pas utilisé ** 'jar cfm MyJar.jar manifeste.txt openfile.class openfile.java' ** Vous devez utiliser l'option ** m **, sinon elle fournira un fichier manifeste par défaut sans définition de classe. J'ai revérifié à nouveau .. j'ai travaillé parfait .. r manquant l'option ** m ** – JWhiz

0

En supposant que vous avez un openfile de classe avec une méthode principale déclarée, cela devrait fonctionner:

jar cvef MyJar.jar openfile openfile.class 

Si vous avez déjà un manifeste et que vous voulez inclure, essayez ceci:

jar cvmf MyJar.jar manifest.txt openfile.class 
+0

Salut, Essayé deux versions de cette réponse, en vain. –

0

Le contenu de votre fichier Manifest doit être le suivant:

Manifest-version: 1.0
Main-Class: openfile

Une ligne vide doit être laissée après ces deux lignes car ne pas le laisser pourrait créer un problème.

+0

Salut, Essayé cela et toujours avoir les mêmes problèmes. Si vous regardez les deux réponses ci-dessus, cela ne semble pas vouloir fonctionner. Est-ce possible un problème de configuration sur mon système? –

+0

Essayez d'extraire le fichier et de voir le contenu. Le contenu doit être: 1) Dossier Meta-Inf contenant le fichier manifest.txt 2) Et fichier otherfile.class (en dehors du dossier meta-inf) Si cela existe, cela devrait fonctionner. – Logan

+0

HI Logan, extrait le fichier jar et contient le fichier openfile.class et un dossier META-INF qui contient un fichier MANIFEST contenant les éléments suivants (sur 3 lignes): Manifest-Version: 1.0 Created-By: 1.6. 0_21 (Sun Microsystems Inc.) Classe principale: openfile Pourtant, je reçois toujours la même erreur. Est-il possible qu'il y ait quelque chose qui ne va pas avec ma configuration java? –