日期:2014-05-20  浏览次数:20884 次

初学。 package使用出错Exception....:...(wrong name)
我的“hello   world!”按照教科书里代码   Beispiel.java   如下:
1)package   de.jse6buch.kap02
2)public   class   Beispiel
....
教科书里解释,第一行指出:Beispiel.java(根据以知类名Beispiel)文件在目录..\de\jse6buch\kap02下。

当前目录..\de\jse6buch\kap02   运行javac.exe   :javac   Beispiel.java   回车
(如正常 在..\de\jse6buch\kap02下生成   Beispiel.class文件)
再运行java.exe:   java   Beispiel   (如书中介绍,不能加后缀.class)

执行报错:Exception   in   theread   "main "   java.lang.NoClassDefFoundError:Beispiel(wrong   name:
....

但如果 键入 java   de.jse6buch.kap02.Beispiel
就运行正常。

请前辈能人解释下为什么要使用package
是不是用package是   都要需要在执行 键入package   指示的路径(象问题中的de.jse6buch.kap02)



------解决方案--------------------
使用package的目的在于使代码根据不同的功能分成不同的组,不同包下的访问权限是不一样的,受访问修饰符(像public private protected等)的限制。
比如,默认的访问修饰符(就是前面不加访问修饰符)只能访问同一个包下的类,如果是在不同的包下,那就没有访问权限。所以,包和访问控制符一起能够增加部分安全性。
------解决方案--------------------
package解决的问题主要有两个:
1.解决了类的命名冲突的问题,在不同的包中的类的类名可以相同
2.解决在大的工程中类的数量过大不好管理的问题,可以按照模块或业务类型将类封装到不同的包中

张孝祥的 < <java就业培训教程> > 中关于包的讲解不错,能借到的话建议看一看那部分内容