我的机器有1.4和1.6两个版本的JDK,我做了一个桌面应用程序, 使用的是1.6的JDK,在PATH,CLASSPATH,JAVAHOME设置的都是1.6的路径,
但是打包成JAR之后,双击运行却使用的是1.4的JRE,
我在命令行输入java -version 显示的版本也是1.6,
要用1.6运行只能 执行java -jar -xxx.jar这样来运行,
这是怎么回事呢,为什么设置的都是1.6了还是会用1.4的虚拟机来运行JAR包
但是打包成JAR之后,双击运行却使用的是1.4的JRE,
我在命令行输入java -version 显示的版本也是1.6,
要用1.6运行只能 执行java -jar -xxx.jar这样来运行,
这是怎么回事呢,为什么设置的都是1.6了还是会用1.4的虚拟机来运行JAR包
1 删除1.4
2 重新安装 6.0, 并注意其JRE的安装,这样注册表里面的就会被覆盖成1.6的JRE了
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的路径。
1.命令行 java -version 显示的是1.6
2.环境变量 path,classpath,javahome设置的都是1.6
3.jar文件未放在1.4的目录里,双击运行显示找不到main类,但是使用java -jar xxx.jar命令就能正确执行,在别人机器上(没有装过1.4的机器)也能正确执行
只要按下面面修改文件打开方式就OK,你要选成用你想用JRE版本下的javaw.exe运行
问题也就出在这里,同样的JAR在没有1.4的机器上就能够正确执行,但是在我这里就是无法找到MAIN类,
同样的 在命令行执行java -jar xxx.jar这样 还是能够正确执行的
问题也就出在这里,同样的JAR在没有1.4的机器上就能够正确执行,但是在我这里就是无法找到MAIN类,
同样的 在命令行执行java -jar xxx.jar这样 还是能够正确执行的
下面是我本机上的,你参照修改即可"C:\Program Files\Java\jre1.6.0_05\bin\javaw.exe" -jar "%1" %*