我正在使用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运行时,everthing很好,java窗口显示了我想要的内容。但是当我点击.jar文件时,什么也没发生。
当我尝试使用java -jar jarname.jar
从命令行运行它时,我收到以下错误。
Exception in thread "main" java.lang.NoClassDefFoundError: org/joda/time/ReadableInstant
我在这里做错了什么?
修改
我下载了Eclipse,创建了一个新项目并将我的源代码复制到它。现在一切都很好。我仍然不明白Netbeans的错误
答案 0 :(得分:0)
也许您还没有将程序编译为可执行的JAR文件。
答案 1 :(得分:0)
您始终可以通过打开命令提示符来检查引发的异常,导航到jar所在的目录并调用java -jar yourJar.jar
。如果应用程序的main正常调用,那么应用程序将启动,否则它将抛出异常,以便更好地理解该问题。
现在因为你使用netbeans导出到jar,netbeans不包括jar中的库,而是在清单中添加了可以找到库的位置,所以可能问题必须是这种情况,否则请尝试第一个我告诉你并分享例外。
答案 2 :(得分:0)
您必须将其编译为可执行的Jar文件。您也可以使用CMD手动编译它,移动到您的目录并编译或运行它:
<强>编译强>
javac filename.java
执行
java filename