线程"main"java.lang.NoClassDefFoundError中的异常

Man*_*anu 5 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));

    } 
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Jon*_*eet 18

你应该在包中包含类文件 - 因此它应该在一个名为的目录中pack.然后使用类路径中的父目录,运行

java pack.sample
Run Code Online (Sandbox Code Playgroud)

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

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

javac -d classes Sample.java
Run Code Online (Sandbox Code Playgroud)

要么

javac -d classes src/pack/Sample.java
Run Code Online (Sandbox Code Playgroud)

将(在两种情况下)创建

classes/pack/Sample.class
Run Code Online (Sandbox Code Playgroud)

然后你可以跑

java -cp classes pack.Sample
Run Code Online (Sandbox Code Playgroud)