请教java classpath 的问题

chen1922 发布于 2012/01/06 11:25
阅读 368
收藏 0

java classpath 的问题困扰了我很久,在IDE中运行和命令行中运行有很多区别:

eclipse中的工作路径如下:/home/chen/workspace/tij/src-exercise/io/Exercise7.java

其中tij是项目名称,src-exercise是源文件,io是包名,Exercise7.java是java文件,其中有一个方法read()用来读取文件。在main中读取自己,read("Exercise7.java")。

现在如果想用命令行进行编译和运行,那么该切换到哪个目录下进行编译和运行呢。

不知到这样描述能不能理解。

 

加载中
0
红薯
红薯

这个描述跟 classpath 完全无关吧?

如果是学习 java 尽量不要用集成开发环境,最好是直接用命令行去编译你的程序,这样你才能对 java 的类路径有深入的认识

匿名网友
匿名网友
你没看清除楼主的问题,呵呵
0
chen1922
chen1922

引用来自“红薯”的答案

这个描述跟 classpath 完全无关吧?

如果是学习 java 尽量不要用集成开发环境,最好是直接用命令行去编译你的程序,这样你才能对 java 的类路径有深入的认识

我觉得有点奇怪,切换到../src-exercise目录下,运行javac io/Exercise7.java 编译成功,运行java io.Exercise7 却提示java.io.FileNotFoundException

如果把read("Exercise7.java")改成read("./io/Exercise7.java"),切换到../src-exercise目录下,运行javac io/Exercise7.java 编译成功,运行java io.Exercise7 结果是正确的。。这个就有点不懂了。

0
Monkey
Monkey

eclipse项目 --》run configuration 这里有一个classpath就是这些目录,你可以往里加新的文件或者文件夹都可以。这些会被添加到虚拟机的配置文件里,在Jar包的metainf文件里会把这个新家的目录加进去。

如果是直接敲命令行,这个路径就是你cmd工作目录了。可以this.getClass().getResource("")这样拿到这个目录到底在哪里。

0
浪客Dandy
浪客Dandy

这个应该不是指ClassPath, 就是当前路径的问题。

我记得默认情况下当前路径应该指的是程序运行路径,这就可以解释你命令行下运行的结果了。

至于Eclipse下,他的执行路径应该是bin或者debug目录,目录结构也要参考这下面的情况。

另外一般IDE都会加JVM参数,因此和你什么都不加从命令行运行肯定有区别。

返回顶部
顶部