单击.jar时主类未运行

时间:2015-08-20 10:27:29

标签: java

我正在使用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的错误

3 个答案:

答案 0 :(得分:0)

也许您还没有将程序编译为可执行的JAR文件。

答案 1 :(得分:0)

您始终可以通过打开命令提示符来检查引发的异常,导航到jar所在的目录并调用java -jar yourJar.jar。如果应用程序的main正常调用,那么应用程序将启动,否则它将抛出异常,以便更好地理解该问题。 现在因为你使用netbeans导出到jar,netbeans不包括jar中的库,而是在清单中添加了可以找到库的位置,所以可能问题必须是这种情况,否则请尝试第一个我告诉你并分享例外。

答案 2 :(得分:0)

您必须将其编译为可执行的Jar文件。您也可以使用CMD手动编译它,移动到您的目录并编译或运行它:

<强>编译

javac filename.java

执行

java filename