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")。
现在如果想用命令行进行编译和运行,那么该切换到哪个目录下进行编译和运行呢。
不知到这样描述能不能理解。
这个描述跟 classpath 完全无关吧?
如果是学习 java 尽量不要用集成开发环境,最好是直接用命令行去编译你的程序,这样你才能对 java 的类路径有深入的认识
######你没看清除楼主的问题,呵呵######这个描述跟 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 结果是正确的。。这个就有点不懂了。
eclipse项目 --》run configuration 这里有一个classpath就是这些目录,你可以往里加新的文件或者文件夹都可以。这些会被添加到虚拟机的配置文件里,在Jar包的metainf文件里会把这个新家的目录加进去。
如果是直接敲命令行,这个路径就是你cmd工作目录了。可以this.getClass().getResource("")这样拿到这个目录到底在哪里。
######这个应该不是指ClassPath, 就是当前路径的问题。
我记得默认情况下当前路径应该指的是程序运行路径,这就可以解释你命令行下运行的结果了。
至于Eclipse下,他的执行路径应该是bin或者debug目录,目录结构也要参考这下面的情况。
另外一般IDE都会加JVM参数,因此和你什么都不加从命令行运行肯定有区别。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。