开发者社区> 问答> 正文

请教java classpath 的问题:报错

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")。

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

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

 

展开
收起
kun坤 2020-06-06 15:21:47 565 0
1 条回答
写回答
取消 提交回答
  • 这个描述跟 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参数,因此和你什么都不加从命令行运行肯定有区别。

    2020-06-06 15:21:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载