2010-03-24 116 views
5
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 /)。线程“main”中的异常java.lang.NoClassDefFoundError

之后,我复制sample.class文件并将其粘贴到其他目录(d:/ myprogram)中。 我一边跑,像

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

在java中的.class文件可以在任何地方运行正确遇到错误?但为什么我不能跑?

+4

为什么这是一个社区维基! – medopal 2010-03-24 10:41:29

回答

18

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

java pack.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 
+0

是的,它正在工作 – Manu 2010-03-24 11:02:49

-1

java/class文件,你也可以删除包的状态吨。

0

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

相关问题