package com.haerbin;class Cat {
}
-----------------------------------------------------------
package com.haerbin;class Dog {
public static void main(String[] args) {
Cat c = new Cat();
}
}
-----------------------------------------------------------
上面的2个java文件,我放在了同一路径下,都是...\com\haerbin这个目录下,
为什么用javac Dog.java,访问不了呢,如果我把2个类最前面的package
都注释掉就能访问了,不加public就是default,不是说在同一包中的其他类
能访问嘛,有点不太懂啊,麻烦解释下啊,谢谢
}
-----------------------------------------------------------
package com.haerbin;class Dog {
public static void main(String[] args) {
Cat c = new Cat();
}
}
-----------------------------------------------------------
上面的2个java文件,我放在了同一路径下,都是...\com\haerbin这个目录下,
为什么用javac Dog.java,访问不了呢,如果我把2个类最前面的package
都注释掉就能访问了,不加public就是default,不是说在同一包中的其他类
能访问嘛,有点不太懂啊,麻烦解释下啊,谢谢
解决方案 »
- 关于JDK6中classpath的问题
- JNI 调用dll 出现java.library.path问题
- \\用java编写 xml数据转入到mysql中 咨询意见
- 高分求助!急!JTable的运行出错!
- 运行rmic PerfectTime时,抛出UnicastRemoteObject not found,请问怎么解决?
- 【请教】如何把已知的字符串名称当作类的对象的名称??
- goto const 是关键字吗?谢谢
- java -jar -classpath c:\a.jar b.jar有错吗?困惑中......
- 求助:JAVA视频传输程序错误:找不到视频设备
- 很急,有大佬帮帮我吗
- 有关equals()方法的疑问
- JComboBox 实现过滤功能?如何实现?
javac X:/XX/.../Dog.java
2.如果你直接用javac Dog.java,那么编译器就会把Dog.java所在目录当作基目录,并且从该基目录开始查找com/haerbin/Cat.java,所以就找不到Cat.java了,如果只有Dog.java没有Cat.java,那么使用javac Dog.java是没有问题的,但是此时使用java Dog还是会出错,必须得保证Dog.class在com/haerbin目录下,然后使用java Dog才正确。
3.编译器在编译源文件的时候不检查目录结构。例如有一个源文件开头有一下语句:package com.text;即使这个源文件没有在子目录com.text下,也可以进行编译。如果它不依赖于其他包,就不会出现编译错误,如果依赖于其他包,就会有问题。