关于java 自设包的一个小问题

发布时间:2024-05-15 14:23 发布:上海旅游网

问题描述:

想自设一个包,就在环境变量的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文件夹

这三个必须放在同一个目录下

热点新闻