罐子不在命令行上运行
问题描述:
我通过谷歌和各种论坛搜索过,(也是这个)。罐子不在命令行上运行
我创建了一个应用程序,一个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
当您添加窗口侦听器的匿名类。至于罐子不工作,你必须描述你正在做什么来创建罐子,以确定你的问题出在哪里。有可能你只是发出错误的命令。
答
JavaBenchmark $ 1.class被定义为匿名类如下:
new WindowAdapter(){public void windowClosing(WindowEvent we){System.exit(0);}}
这将是更好的,如果标题给你的问题是什么有些淡淡的。 – 2011-12-22 16:45:14
你是如何创建罐子的? – Shraddha 2011-12-22 16:45:25
请在你的标题中更具体一些。像“我尝试过所有的东西......”或“这根本行不通”的标题不提供任何有价值的信息,以及那些可以帮助你的人可能会以这样的标题忽略你的问题。 – Paul 2011-12-22 16:48:12