初学Java的程序员在下载java sdk、设置环境变量后都会写一个HelloWord程序来测试自己的环境是否搭建得正确。我在之前的学习中就遇到了Exception in thread "main" java.lang.NoClassDefFoundError这个问题。
- 使用javac命令编译源文件,ok没问题。
2. 使用java命令来执行Hello.class,here comes the problem.
这时发现用java Hello这个命令来运行时报NoClassDefFoundError错误,乍一看觉得没有什么问题,环境变量配置应该是正确的否则的话第一步不可能成功。针对上面的异常在后面出现了com/afeiluo/Hello,貌似是一个路径。
3.这时打开源文件Hello.java,如下所示:
package com.afeiluo;
public class Hello{
public static void main(String[] args){
System.out.println("hello world");
}
}
在Hello.java中的第一行中有一条package语句,package是java中的包。关于包的声明和使用有以下要求:
- 为了声明一个包,首先必须建立一个相应的目录结构,子目录与包名一致。然后在需要放入该包的类文件开头声明包,形式为:
package 包名;
这样,在这个类文件中定义的所有类就都被装入到您所希望的包中了,例如:
package bookexample; class A{ …… } class B extends A{ …… } public class OverrideExample{ …… }
不同的程序文件内的类也可以同属于一个包,只要在这些程序文件前都加上同一个包的说明即可。
-
在Java中,为了装载使用已编译好的包,通常可使用以下3种方法:
(1) 在要引用的类名前带上包名作为修饰符。
(2) 在文件开头使用import引用包中的类。
(3) 在文件前使用import引用整个包。