在CMD下对Java程序的调试

问题1:在Eclipse下可以正确的编译运行,在CMD下到了源文件夹下,可以正确的编译,但用java命令运行时,一直报Main主线程异常,说找不到类?
解答:这和classpath的设置有关系,在执行java命令时,首先会查找系统变量里classpath中是否找到类,找不到就会报错,有两种解决方案:1把你当前的目录加入到classpath中;2使用 -classpath选项指定类存放的路径。

问题2:javac -version 和 java -version 两个版本不一样的问题?
今天在CMD下编译程序忽然发现两个命令出来的版本号是不一样,当然,我机器本身安装了多个版本的jdk,javac使用的是环境变量JAVA_HOME所指定的版本,java命令使用的另一个版本,原来是在使用exe文件安装JDK时在注册表里添加了JAVA_HOME注册项,而java会优先选用注册表里面的,因此要和系统变量里面的统一,需要修改Windows Registry (HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment)下的JAVA_HOME键值和RunTimeLib(重要)键值

java命令简介:
当我们在命令行输入:
Java(javac) XXX
的时候,java.exe(javac.exe)的工作就是找到合适的JRE来执行类文件。java.exe(javac.exe)依照如下逻辑来寻找JRE:

自己的目录下有没有JRE目录(这么说并不是非常精确,原因请详见JDK源代码,在此不作特别说明);
父目录下的JRE子目录;
查询Windows Registry (HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment);
所以,java.exe(javac.exe)的执行结果和“您计算机里面哪一个java.exe被执行,然后哪一套JRE被拿来执行java应用程序”有莫大的关系。

可用参数-verbose来大致查看调用的JRE的路径
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章