2011-12-22 7 views
-1

J'ai fait des recherches sur google et divers forums, (celui-ci aussi).Jar ne fonctionne pas sur la ligne de commande

J'ai créé une application, un benchmark java, et je voulais créer un fichier JAR exécutable, pour utiliser le programme sur d'autres machines. Malheureusement, le pot ne fonctionne pas, tout est parfait avec le code pour faire du fichier jar, le programme s'exécute en ligne de commande. J'ai essayé les astuces trouvées sur ce forum pour réparer ma création de pot, mais cela n'a pas fonctionné aussi bien.

Étrangement, quand je compilez le fichier JavaBenchmark.java je ne suis pas un seul fichier (JavaBenchmark.class), mais aussi JavaBenchmark 1.class $: O (quelqu'un sait pourquoi?)

Je vous demande donc pour vérifier mon code s'il y a peut-être quelques problèmes, je dois dire que c'est une application graphique.

import java.io.*; 
import java.util.Date; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
public class JavaBenchmark implements ActionListener 
{ 
    private Frame mainWindow; 
    private Button exit; 
    private String dateAndTime; 
    private TextArea values; 
    private String stringMaxMemory; 
    private String stringFreeMemory; 
    private String stringTotalFreeMemory; 
    private String stringAllocatedMemory; 

    public JavaBenchmark(String s) 
    { 
     Date myDate = new Date(); 
     dateAndTime = String.format("%tA, %<tF", myDate); 

     File[] roots = File.listRoots(); 

     mainWindow = new Frame(s); 
     mainWindow.setSize(640,480); 
     mainWindow.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent we){System.exit(0);}}); 

     String version = System.getProperty("java.version"); 
     String jvmversion = System.getProperty("java.jvm.version"); 
     String checkedJvmVersion; 
     if (jvmversion == null) 
     { 
      checkedJvmVersion = "Java Virtual Machine version: N/A"; 
     } 
     else 
     { 
      checkedJvmVersion = "Java Virtual Machine version: " + jvmversion; 
     } 
     String jvmname = System.getProperty("java.vm.name"); 
     String osname = System.getProperty("os.name"); 
     String osarchitecture = System.getProperty("os.arch"); 
     String osversion = System.getProperty("os.version"); 
     String processor = System.getenv("PROCESSOR_IDENTIFIER"); 
     int processorCores = Runtime.getRuntime().availableProcessors(); 

     Runtime runtime = Runtime.getRuntime(); 
     double freeMemory = runtime.freeMemory(); 
     double allocatedMemory = runtime.totalMemory(); 
     double maxMemory = runtime.maxMemory(); 
     double totalFreeMemory = (freeMemory + (maxMemory - allocatedMemory)); 
     stringFreeMemory = String.format("%5.2f", (freeMemory)/1024/1024); 
     stringAllocatedMemory = String.format("%5.2f", (allocatedMemory)/1024/1024); 
     stringMaxMemory = String.format("%5.2f", (maxMemory)/1024/1024); 
     stringTotalFreeMemory = String.format("%5.2f", (totalFreeMemory)/1024/1024); 

     exit = new Button("Exit"); exit.addActionListener(this); 
     values = new TextArea(30, 120); 

    Panel exitButton = new Panel(); 

    exitButton.add(exit); 

    mainWindow.add(values, "North");   
    mainWindow.add(exitButton); 

    values.append("Your Java benchmark, as on: " + dateAndTime + "\n\n"); 
    values.append("Java version: " + version + "\n"); 
    values.append("Java Virtual machine version: " + checkedJvmVersion + "\n"); 
    values.append("Java Virtual Machine name: " + jvmname + "\n"); 
    values.append("\n"); 
    values.append("Operating System: " + osname + "\n" + osarchitecture + " os version: " + osversion + "\n"); 
    values.append("\n"); 
    values.append("Processor: " + processor + " (number of cores: " + processorCores + ")\n"); 
    values.append("\n"); 
    values.append("Memory info: \n"); 
    values.append("Maximum RAM memory for JVM:  " + stringMaxMemory + " Mb\n"); 
    values.append("Allocated RAM memory for JVM:  " + stringAllocatedMemory + " Mb\n"); 
    values.append("Free RAM memory for JVM:  " + stringFreeMemory + " Mb\n"); 
    values.append("Total free RAM memory for JVM:  " + stringTotalFreeMemory + " Mb\n\n\n"); 
    values.append("HardDrive, and VirtualDrive details:\n"); 
    for (File root : roots) { 
      if (root.getTotalSpace() == 0) 
      { 
       continue; 
      } 
      else 
      { 
       values.append("Disk: " + root.getAbsolutePath() + " space allocation:\n"); 
       values.append("Total space :"); 
       values.append(String.format("%5.2f", Double.valueOf(root.getTotalSpace())/1024/1024/1024)); 
       values.append(" Gb\n"); 
       values.append("Free space : "); 
       values.append(String.format("%5.2f", Double.valueOf(root.getFreeSpace())/1024/1024/1024)); 
       values.append(" Gb\n"); 
       values.append("Occupied disk space : "); 
       values.append(String.format("%5.2f", Double.valueOf(root.getTotalSpace() - root.getFreeSpace())/1024/1024/1024)); 
       values.append(" Gb\n\n"); 

      } 
     } 

    mainWindow.pack();    //Creating the window 
    mainWindow.setLocationRelativeTo(null);   //true: position at (0,0)  false: position at center 
    mainWindow.setResizable(false);   //Intuitively known commands 
    mainWindow.setVisible(true);  //Intuitively known commands 
} 

public static void main(String[] args) 
{ 
    new JavaBenchmark("Display"); 
} 

public void actionPerformed(ActionEvent e) { 
    if(e.getSource()==exit) 
    { 
     System.exit(0); 
    } 
} 
} 
+2

Il serait mieux si le titre a donné une idée de ce que votre problème est. –

+0

Comment avez-vous créé le pot – Shraddha

+0

S'il vous plaît être plus précis dans votre titre .. titres comme "J'ai tout essayé .." ou "Cela ne fonctionne tout simplement pas" ne fournissent pas d'informations précieuses ainsi que ceux qui pourraient aider ignorera probablement votre question avec un tel titre. – Paul

Répondre

1

Le JavaBenchmark$1.class est une classe anonyme que vous créez pour WindowAdapter lorsque vous ajoutez un écouteur de fenêtre.

Dans la mesure où le pot ne fonctionne pas, vous devez décrire ce que vous faites pour créer le pot pour identifier où vous allez mal. Les chances sont que vous êtes simplement en train d'émettre la mauvaise commande.

+0

Pour créer un fichier jar: jar -cvfm manifeste.mf JavaBenchmark.class l'erreur affichée lorsque j'essaie d'exécuter le jar est: Impossible de trouver la classe principale: JavaBenchmark Le programme va quitter – Yakuman

+0

Aussi je viens de découvrir que le programme ne fonctionne pas sur d'autres machines, même si JDK est installé à la place , il jette de nombreuses exceptions, pour beaucoup classé ne peut être trouvé – Yakuman

1

JavaBenchmark $ 1.class est la classe anonyme définie comme suit:

new WindowAdapter(){public void windowClosing(WindowEvent we){System.exit(0);}} 
Questions connexes