java -version 与 javac -version的区别,看图说话。
系统环境变量配置为 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(22)
不对啊,系统环境变量里JAVA_HOME是1.7的 对应classpath也就是1.7的啊
这个问题是你的系统里边装了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
可以看出都是1.7 ,但是java -version 还是1.5
楼上说的都是正确的,楼主一定要认真看,理解了再去做。
假设我现在安装的是旧版本的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
嗯,说的有道理。这个注册表我也在网上搜索过此类问题,但是我的 没有Java Development Kit项目
删注册表,删%SystemRoot%system32目录下的文件
按照2楼的说法,已经删除了
环境遍历没配置好,不说了
java -version 是Java的版本信息
javac -version 是Java compile的版本信息
删除之后还是老样子。
删除java.exe和javaw.exe对系统没影响吧?
java和javac是两个东西 后者是编译器 也就是说前者是jdk版本后者是java编译器的版本
从上面的内容可以看出来你classpath下的jdk应该是1.5的
这个问题是你的系统里边装了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
回复
D:ShenTongjrebin PATH里面这个去了,就是这个的原因造成你的java命令不对
回复
另外 修改了环境变量需要重新打开命令提示符。还有就是外部的jar包即使不在CLASSPATH下也可以用java命令的-cp参数指定,不用甩去JDK的lib,系统包的目录还是不要放其他的包。具体可以搜索一下这个参数
回复
嗯 ,cd这个我会。之前是用cd 到jar包目录下执行java报错,后来才拷进去的。
回复
不是说cd,是说java命令的 -cp 也就是 -classpath 参数可以指定外部的jar包
回复
哦。。。看错了 ,已经解决了 。还是很感谢你的帮助。
这个得看PATH怎么定义的。
看看你Windows的System32下的那个java.exe是什么版本的,删掉。有几个版本的jdk安装程序会丢个java.exe过去,不删掉他永远读到的都是他。
非常好的方法,thx
问题已经解决了。
首先,感谢各位的帮助。接下来就分享下方法吧。
按照上面所说 问题解决 关键是 将%JAVA_HOME%bin 放到path变量的最前面。
那么这样后面的问题就没错了
欢迎mark