【发布时间】:2015-08-20 10:27:28
【问题描述】:
我正在用 netbeans 编写一个程序并创建一个 .jar 文件。这是我的主要课程:
public class Test {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
//try {
// TODO code application logic here
//create an object and execute the function to calculate monthly wage
CalculateMonthlyWage monthlyWage = new CalculateMonthlyWage();
monthlyWage.CalculateDailyWorkingDurationFromCSV();
//round the result to 2 decimal
BigDecimal result1 = round(monthlyWage.getTotalMonthID1(),2);
BigDecimal result2 = round(monthlyWage.getTotalMonthID2(),2);
BigDecimal result3 = round(monthlyWage.getTotalMonthID3(),2);
System.out.println("1, Janet Java, $"+result1);
//create Java swing window
Frame f = new Frame();
JLabel mLabel = new JLabel();
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
mLabel.setText(convertToMultiline("Monthly Wage 3/2014"
+"\n1, Janet Java, $"+result1.toString()
+"\n2, Scott Scala, $"+result2.toString()
+"\n3, Larry Lolcode, $"+result3.toString()));
f.add(mLabel);
f.setSize(500, 500);
f.setVisible(true);
}
public static String convertToMultiline(String orig) {
return "<html>" + orig.replaceAll("\n", "<br>");
}
}
这个类是main,它将创建一个CalculateMonthlyWage类对象,然后调用CalculateDailyWorkingDurationFromCSV()方法。之后它将创建一个窗口并显示结果。
当我尝试使用 IDE 运行时,一切都很好,java 窗口显示了我想要的。但是当我点击 .jar 文件时,什么都没有发生。
当我尝试使用java -jar jarname.jar 从命令行运行它时,我收到以下错误。
Exception in thread "main" java.lang.NoClassDefFoundError: org/joda/time/ReadableInstant
我在这里做错了什么?
编辑
我下载了 Eclipse,创建了一个新项目并将我的源代码复制到其中。现在一切都很好。我还是不明白 Netbeans 出了什么问题
【问题讨论】:
-
你的 jar 中是否有一个 MANIFEST,它会告诉 Java 哪个是主类? docs.oracle.com/javase/tutorial/deployment/jar/appman.html
-
我有一个清单,我也设置了主类
-
@fabian:在我问这个问题之前,我已经阅读并编辑了我的清单和测试
标签: java