在CMD下对Java程序的调试

本文探讨了在Eclipse环境下可以正常编译运行Java程序,但在CMD中使用java命令运行时遇到Main主线程异常的问题,并提供了两种解决方案。此外,还讨论了javac-version和java-version显示不同版本的原因及解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题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的路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值