关于package的一个问题

onlywuyuan 2010-09-30 12:47:55
代码一
package a ;
public class DemoA
{
public void print()
{
System.out.println("HELLO !!!") ;
}
};

代码二
package b ;
import a.* ;
public class DemoB
{
public static void main(String args[])
{
new DemoA().print() ;
}
};

问题描述:
DemoA.java和DemoB.java都放在同一个文件夹下。
按上面的两个代码编译执行 没有错误
但是如果DemoB 去掉“package b ;” 则编译出错 提示无法访问DemoA;此时将“new DemoA().print() ;”改为“new a.DemoA().print() ;”则编译可以通过
请高手为小弟解释下这是为什么?感激不尽
...全文
115 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
blazingfire 2010-09-30
  • 打赏
  • 举报
回复
我在eclpise里试了没有问题,估计是你jdk classpath没有设置对。检查一下你自己classpath环境变量里是否包含当前路径,也就"."
ggvvcc 2010-09-30
  • 打赏
  • 举报
回复
删除语句之后有没有重新编译生成新的class文件?
你用的是什么编辑环境?
marqio 2010-09-30
  • 打赏
  • 举报
回复
包的问题。使用a.DemoA()其实是全限定名,这样就不用import a.* ;也可以访问了。
hanRivergo 2010-09-30
  • 打赏
  • 举报
回复
6楼答得好。
s32h321 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 onlywuyuan 的回复:]

问题描述:
DemoA.java和DemoB.java都放在同一个文件夹下。
按上面的两个代码编译执行 没有错误
但是如果DemoB 去掉“package b ;” 则编译出错 提示无法访问DemoA;此时将“new DemoA().print() ;”改为“new a.DemoA().print() ;”则编译可以通过

[/Quote]

package 代表的是工程中该文件的上级包

你把这句话删除了 肯定报错的 还有 a.DemoA()本来就代表 package a.Demoa;这个类 所以这样也正确的
茫茫大海 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 onlywuyuan 的回复:]

我用的cmd 在命令行下编译的
[/Quote]
试了我上面说的方法了没?如果还不行的话,可以联系我!709860965
onlywuyuan 2010-09-30
  • 打赏
  • 举报
回复
我用的cmd 在命令行下编译的
茫茫大海 2010-09-30
  • 打赏
  • 举报
回复
编译的时候可以使用javac -d . xxx.java!估计是你的class没在合适的路径下。然后你试试上面的问题,能不能解决!如果还解决不了的话,删除对应目录下的class文件,重新编译再试!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧