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文件中可以在任何地方运行吗?但为什么我不能跑?
答案 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语句。