java问题 不定义包,编译和运行都没问题,定义了包后,编译可通过,执行就显示错误

来源:百度知道 编辑:UC知道 时间:2024/06/24 09:25:14
程序如下
package xyz.abc;//这句如果没有就没有问题,这是为什么啊
class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
------------------------------------------------------------
java.lang.NoClassDefFoundError: HelloWorld (wrong name: xyz/abc/HelloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadCl

你是在命令行里编译的吧?
如果是IDE环境就不会出这个问题。
编译后的字节码应该按包层次组织到文件夹中才能正常运行的。

如果是dos窗口下,编译,那么必须得在与你类同级的目录下进行编译

写了包之后,在dos命令下把文件编译成.class文件,然后在你配的环境变量的class的路径下新建文件夹xyz,在xyz文件夹下新建文件夹abc,然后把你编译后的.class文件放在里面,在dos命令下把路径改到。。/xyz/abc下,然后在运行就可以了

package xyz.abc貌似包的名称不能有点号的

包是两层的

包只能是package.包名 一层