簡體   English   中英

Jar無法在命令行上運行

[英]Jar does not run on command line

我確實通過Google和各種論壇(也是該論壇)進行搜索。

我已經創建了一個應用程序(一個Java基准測試),並且想要創建一個可運行的jar文件,以便在其他計算機上使用該程序。 不幸的是,jar無法正常工作,使用jar文件的代碼完成了所有工作,程序在命令行上運行。 我嘗試了在此論壇上找到的技巧來修復我的jar創建,但效果不佳。

奇怪的是,當我編譯JavaBenchmark.java文件時,我不僅得到了一個文件(JavaBenchmark.class),還沒有得到JavaBenchmark $ 1.class:O(任何人都知道為什么嗎?)

因此,我請您檢查我的代碼是否存在某些問題,我必須說這是一個GUI應用程序。

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);
    }
}
}

JavaBenchmark$1.class是您在添加窗口偵聽器時為WindowAdapter創建的匿名類。

至於Jar無法正常工作,您必須描述創建Jar所要執行的操作,以識別出哪里出了問題。 您可能只是發出了錯誤的命令。

JavaBenchmark $ 1.class是定義如下的匿名類:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM