线程“main”java.lang.NoClassDefFoundError中的异常

时间:2010-03-24 10:11:49

标签: java

package pack;


public class sample{ 

 public static void main(String input[])
    {

        NumberFormat numberFormat = new DecimalFormat("#,##0.00##");
    System.out.println(numberFormat.format(44533125.00));

    } 
}

代码在当前目录中正常工作..(c:/ myprogram /)。

之后我复制sample.class文件并将其粘贴到其他目录(d:/ myprogram)中。 我跑步时遇到错误,比如

Exception in thread "main" java.lang.NoClassDefFoundError: sample (wrong name: pack/sample)

在java .class文件中可以在任何地方运行吗?但为什么我不能跑?

3 个答案:

答案 0 :(得分:18)

您应该在包中包含类文件 - 因此它应该位于名为pack的目录中。然后使用类路径中的父目录,运行

java pack.sample

(您还应该将类名更改为Sample以遵循约定,顺便说一下 - 并运行pack.Sample。)

如果您使用javac构建,请指定“-d”选项以告知它基本目录,并在必要时创建适当的包结构。例如:

javac -d classes Sample.java

javac -d classes src/pack/Sample.java

将(在两种情况下)创建

classes/pack/Sample.class

然后你可以运行

java -cp classes pack.Sample

答案 1 :(得分:0)

IntelliJ和其他IDE可能不会重构您的运行/调试配置。您必须手动更改Main类名称前面的包名称。例如,更改' sample.Main'到' com.company.package.ui.Main'所以它会在你下次尝试运行时正确启动。 IDE可能已经使用红叉标记了“运行/调试”按钮,因为它无法找到主类。当您打开运行/调试配置时,它也会发出警告。

答案 2 :(得分:-1)

如果您没有使用单个java / class文件,也可以删除package语句。