问题描述:
想自设一个包,就在环境变量的classpath中添加了一个目录C:\u\JAVA\LIB。
然后我写了一个小java文件(accept.java):
package net.mindview.simple;
public class accept{
public accept(){
System.out.println("net.mindview.simple.accept");
}
}
编译后在C:\u\JAVA\LIB\net\mindview\simple目录下出现accept.class文件
在C:\u\JAVA\LIB目录下出现accept.java文件。
现在我又写了一个java文件(dong.java)
import net.mindview.simple.*;
public class dong{
public static void main(String[] args)
{
accept v=new accept();
}
}
我把它放在桌面上,编译时怎么提示软件包net.mindview.simple 不存在呢?
而我其他的java文件(程序最前面是import java.***之类的 )放在桌面怎么就可以正常运行呢?
谢谢!
"我把它放在桌面上" 中的"它"是 dong.java. 刚才没说清楚,真不好意思。
怎样才可以让dong.java正常运行呢? 谢谢!
问题解答:
真折腾,用Eclipse不好么?
因为“我把它放在桌面上”。
java里面的“包”在文件系统中表现为目录的形式。就是说你accept.java这个类是在net.mindview.simple包中的,假设你放在D盘下编译(你放在桌面,但为了方便叙述我就当成路径较短D:盘了,但原理是一样的),即工作路径为“D:\”,那么编译之后的class文件应该是在D:\net\mindview.simple文件夹中的。所以当你将class文件直接放到D:盘目录下,编译时当然就“提示软件包不存在”,而运行时就提示找不到类啦!
可见,一个简单的解决法子就是,将package声明删掉,呵呵!否则你就需要使用javac net\mindview\simple\access.java来编译或者运行了。
补充:将dong.java放在C:\u\JAVA\LIB\下。javac在找classpath中的类的时候,它好象只会找.jar或者.zip文件的。对于.class文件,如上面所说,包在文件系统中表现为目录的形式,就是说,你的ClassPath指向“C:\u\JAVA\LIB”,但accept.class实际在“C:\u\JAVA\LIB\net\mindview\simple”目录下,javac当然找不到了。
你将dong.java放在C:\u\JAVA\LIB\下编译,那么javac就不是从classpath中找了,而是从当前目录开始试图以“包结构”的形式解释“目录结构”,就可以找到accept.class了。^_^
accept.java
dong.java
net文件夹
这三个必须放在同一个目录下