关于ClassPath的奇怪问题

acai 2003-11-16 03:19:32
我机器上java的设置都很正常,编译、运行都很正常,机器上同时装了jb和eclipse,现在发现了一个问题:
假如我在D:\Test\com\study下放了自己的文件,如MyClass,根据目录都放在com.study包下(MyClass.java的头写上了 package com.study),编译好后,在ClassPath里加上了D:\Test,然后我在E盘根目录下写了个测试文件E:\Hello.java, 里面导入了com.study这个包来做测试,import com.study.MyClass;然后我在命令行下: D:\>javac Hello.java 结果说找不到包com.study ??不是说在classpath里设置好后就可以吗??

包文件、目录:
D:\Test\com\study\MyClass.java
Classpath已加上:D:\Test; classpath最前面也加“.;”了,设置应该是正确的,因为我平时编译、测试都很正常;
测试文件在:
E:\Hello.java

后来我把Hello.java放到D:\Test下,我想这下是相同的目录,应该可以了吧?
编译: D:\>Test javac Hello.java 正常
运行: D:\>Test java Hello 也正常了

然后,奇怪的事情发生了!!!
我再一次的把E:\Hello.java(注意,是包外面的那个)编译,也正常了!!运行,也正常!!然后,我把D:\Test下面的那两个Hello.java,Hello.class都删掉,再一次编译
E:\Hello.java,正常!!运行,正常!!!!

到底是怎么回事???为什么开始不行,当我把文件放到和包文件相同的目录下编译后,其他地方导入这个包的编译也行了??
...全文
57 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
acai 2003-11-28
  • 打赏
  • 举报
回复
没法解决,散分……
acai 2003-11-18
  • 打赏
  • 举报
回复
to sibuliao(尚勇军) :
你没明白我的意思啊,我是说我在d盘放了一个包,然后在e盘有个测试文件要用到这个包,但是怎么都不行,后来把e盘的那个测试文件放到d盘的包里编译,结果行,然后重新在e盘编译测试文件,竟然也行了!!在其他任何地方的不同文件,只要是用到这个包的,以前编译不过,现在竟然都奇迹般的行了!!
马行空牛耕田 2003-11-17
  • 打赏
  • 举报
回复
2k下面改变classpath其实只要退出所有的cmd窗口,再进去就可以了。
sibuliao 2003-11-17
  • 打赏
  • 举报
回复
楼上大哥!
我机器上java的设置都很正常,编译、运行都很正常,机器上同时装了jb和eclipse,现在发现了一个问题:
假如我在D:\Test\com\study下放了自己的文件,如MyClass,根据目录都放在com.study包下(MyClass.java的头写上了 package com.study),编译好后,在ClassPath里加上了D:\Test,然后我在E盘根目录下写了个测试文件E:\Hello.java, 里面导入了com.study这个包来做测试,import com.study.MyClass;然后我在命令行下: D:\>javac Hello.java 结果说找不到包com.study ??不是说在classpath里设置好后就可以吗?~~~~~~~~~~~~~~~~~~~

包文件、目录:
D:\Test\com\study\MyClass.java
Classpath已加上:D:\Test; classpath最前面也加“.;”了,设置应该是正确的,因为我平时编译、测试都很正常;
测试文件在:
E:\Hello.java

后来我把Hello.java放到D:\Test下,我想这下是相同的目录,应该可以了吧?
编译: D:\>Test javac Hello.java 正常
运行: D:\>Test java Hello 也正常了

然后,奇怪的事情发生了!!!
我再一次的把E:\Hello.java(注意,是包外面的那个)编译,也正常了!!运行,也正常!!然后,~~~~~~~~~~~~~~~我把D:\Test下面的那两个Hello.java,Hello.class都删掉,再一次编译
E:\Hello.java,正常!!运行,正常!!!!

到底是怎么回事???为什么开始不行,当我把文件放到和包文件相同的目录下编译后,其他地方导入这个包的编译也行了??



我觉得你说的好复杂有点矛盾
E盘的文件怎么在d盘 编译
是不是你打错了?
你第一次编译Hello.java 这个文件的时候
Hello.java 这个文件放在什么地方?



DDrddr 2003-11-16
  • 打赏
  • 举报
回复
2K下面注销的话,classpath的设置就能生效
iamwls 2003-11-16
  • 打赏
  • 举报
回复
复制一个 Hello.java为 Hello2.java编译试试
肯定也是可以运行的
那就不奇怪了吧
acai 2003-11-16
  • 打赏
  • 举报
回复
我明白啊,问题是我的classpath设置应该是对的,但是就是不行,非要到用到的包里编译一次,然后在任何地方用到这个包的类就都可以了,不去到引用的包里编译一次,就是不行!!我也很奇怪怎么会这样呢??
loveyousomuch 2003-11-16
  • 打赏
  • 举报
回复
你的问题说的好复杂,其实就是一个class路径的问题,搞清楚后,也没什么
acai 2003-11-16
  • 打赏
  • 举报
回复
都重新启动好几次了!!!
okwuzhijun 2003-11-16
  • 打赏
  • 举报
回复
在这个过程中里重启过计算机没有?对classpath的设置是要重启后才起作用的

62,616

社区成员

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

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