java -version 与 javac -version的区别,看图说话。

发布于 2021-11-21 23:29:49 字数 1737 浏览 937 评论 22

 

 

 

系统环境变量配置为  jdk1.7

删除C:WindowsSystem32  下的java.exe 和javaw.exe 依旧没解决

 

each  %path%   结果

D:ShenTongbin;D:ShenTongjrebin;D:ShenTongbin;D:ShenTongjrebin;C:Windo
wssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPower
Shellv1.0;C:Program FilesWIDCOMMBluetooth Software;C:Program FilesWIDCOM
MBluetooth Softwaresyswow64;C:Program Files (x86)Common FilesRoxio Shared1
0.0DLLShared;C:Program Files (x86)Common FilesRoxio SharedDLLShared;C:Pr
ogram Files (x86)Javajdk1.7.0bin;%CATALINA_HOME%bin

 

each %JAVA_HOME%

 

 问题的来源,在研究apcahe开源项目 lucene时,把lucene必须包 放到了  jdk1.7的lib目录下  执行

java org.apache.lucene.demo.IndexFiles F:FileTestLucenefile  命令报如下错误

参考文章 http://blog.csdn.net/csh624366188/article/details/6823209

 

查询是jdk版本不匹配   然后就用了 下java 与 javac命令  继而就想探讨下区别。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(22

浅沫记忆 2021-11-22 08:22:43

不对啊,系统环境变量里JAVA_HOME是1.7的 对应classpath也就是1.7的啊

谁的新欢旧爱 2021-11-22 08:22:43

这个问题是你的系统里边装了2个以上的jdk造成的,而且是jdk1.5是后安装的.

原因是:

jdk版本高于1.5的,在安装时会把java.exe, javaw.exe复制到Windows系统的C:Windowssystem32下.而javac.exe却没有复制. Windows系统会把C:Windowssystem32当做系统的首选Path.

你的Java_home是指向jdk1.7的. 因此javac -version时显示的是1.7版本, java -version显示1.5版本

想要同时显示1.7, 可以到C:Windowssystem32把java.exe, javaw.exe手动删除, 这样在试试各个version

掩饰不了的爱 2021-11-22 08:22:43

可以看出都是1.7 ,但是java -version 还是1.5

悸初 2021-11-22 08:22:43

楼上说的都是正确的,楼主一定要认真看,理解了再去做。

假设我现在安装的是旧版本的JDK1.5,那么在系统环境变量里我们设置了java_home和classpath,对应存放的注册表项是 (HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Environment),JDK在安装的过程当中将在注册表会生成如下3个项目:
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Development Kit
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Plug-in
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment
同时,JDK安装程序将会把java.exe,javaw.exe,javaws.exe这3个可执行文件拷贝 到%SystemRoot%system32目录下,由于%SystemRoot%system32被操作系统缺省的设置为最高优先权的PATH搜索 路径,因此可保证用户在命令行任何目录下可运行java.exe来启动JVM

掩饰不了的爱 2021-11-22 08:22:43

嗯,说的有道理。这个注册表我也在网上搜索过此类问题,但是我的 没有Java Development Kit项目

想挽留 2021-11-22 08:22:43

删注册表,删%SystemRoot%system32目录下的文件

断爱 2021-11-22 08:22:43

按照2楼的说法,已经删除了

左岸枫 2021-11-22 08:22:43

岁吢 2021-11-22 08:22:43

环境遍历没配置好,不说了

背叛残局 2021-11-22 08:22:43

java -version 是Java的版本信息

javac -version 是Java compile的版本信息

秉烛思 2021-11-22 08:22:42

删除之后还是老样子。

彼岸花ソ最美的依靠 2021-11-22 08:22:42

删除java.exe和javaw.exe对系统没影响吧?

眼泪淡了忧伤 2021-11-22 08:22:42

java和javac是两个东西 后者是编译器 也就是说前者是jdk版本后者是java编译器的版本

从上面的内容可以看出来你classpath下的jdk应该是1.5的

绝影如岚 2021-11-22 08:22:40

这个问题是你的系统里边装了2个以上的jdk造成的,而且是jdk1.5是后安装的.

原因是:

jdk版本高于1.5的,在安装时会把java.exe, javaw.exe复制到Windows系统的C:Windowssystem32下.而javac.exe却没有复制. Windows系统会把C:Windowssystem32当做系统的首选Path.

你的Java_home是指向jdk1.7的. 因此javac -version时显示的是1.7版本, java -version显示1.5版本

想要同时显示1.7, 可以到C:Windowssystem32把java.exe, javaw.exe手动删除, 这样在试试各个version

心欲静而疯不止 2021-11-22 08:22:07

回复
D:ShenTongjrebin PATH里面这个去了,就是这个的原因造成你的java命令不对

樱花落人离去 2021-11-22 08:21:41

回复
另外 修改了环境变量需要重新打开命令提示符。还有就是外部的jar包即使不在CLASSPATH下也可以用java命令的-cp参数指定,不用甩去JDK的lib,系统包的目录还是不要放其他的包。具体可以搜索一下这个参数

贱贱哒 2021-11-22 08:21:20

回复
嗯 ,cd这个我会。之前是用cd 到jar包目录下执行java报错,后来才拷进去的。

梦中楼上月下 2021-11-22 08:21:16

回复
不是说cd,是说java命令的 -cp 也就是 -classpath 参数可以指定外部的jar包

瑾兮 2021-11-22 07:37:44

回复
哦。。。看错了 ,已经解决了 。还是很感谢你的帮助。

兮颜 2021-11-22 07:14:05

这个得看PATH怎么定义的。

看看你Windows的System32下的那个java.exe是什么版本的,删掉。有几个版本的jdk安装程序会丢个java.exe过去,不删掉他永远读到的都是他。

混吃等死 2021-11-22 07:11:20

非常好的方法,thx

简单气质女生网名 2021-11-22 02:01:29

问题已经解决了。

首先,感谢各位的帮助。接下来就分享下方法吧。

按照上面所说 问题解决  关键是  将%JAVA_HOME%bin  放到path变量的最前面。

那么这样后面的问题就没错了 

欢迎mark  

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文