Eclipse Java版本与编译后的Jar不一样



我有一个Java应用程序在Eclipse使用jdk1.7.0_72

当从一个可运行的jar运行一个项目时,我遇到了一个问题,当从Eclipse运行时,应用程序工作完美。应用程序使用一个cacert,当我使用可运行的jar时,由于某种原因,这个cacert失败了。我注意到的是,当我从Eclipse中运行时,可运行jar的java版本是不同的。这会导致问题。

下面是我从Eclipse运行时的系统属性片段:
**sun.boot.library.path=C:Program FilesJavajdk1.7.0_72jre...
java.vm.version=24.72-b04
java.runtime.version=1.7.0_72-b14
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:Program FilesJavajdk1.7.0_72jre…
java.library.path=C:Program FilesJavajdk1.7.0_72bin…**
下面是我从JAR运行时的系统属性片段:
**sun.boot.library.path=C:Program FilesJavajre7bin
java.vm.version=24.75-b04
java.runtime.version=1.7.0_75-b13
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:Program FilesJavajre7libendorsed
java.library.path=C:Program FilesJavajre7bin;C:Win…**

我如何使JAR使用Eclipse使用的相同版本?

同样,当我运行java -version时,我得到这个:"1.7.0_72"当我点击About Java时,我看到了这个:"1.7.0_75-b13"

如果您运行JAR,它将使用您在PATH变量上设置的Java版本。如果从Eclipse中运行它,可以告诉Eclipse使用哪个版本。你可以看到图书馆。path变量是不同的,所以在每种情况下加载的是不同的Java。

您可以在PATH变量中设置适当的Java版本,也可以在Eclipse的Preferences - Java - Installed JRE菜单中设置。

看起来您的机器上至少安装了两个Java版本。

    Java 1.7.0_72-b14在您的Eclipse中配置
  1. Java 1.7.0_75-b13配置在你的PATH

你可以根据这个指南来改变你环境中的java系统变量:https://docs.oracle.com/javase/tutorial/essential/environment/paths.html

您肯定使用了不同的JRE。

您已经安装了JDK和JRE。碰巧JDK有一个内部JRE,您可以在第一行看到:

**sun.boot.library.path=C:Program FilesJavajdk1.7.0_72jre... 

JRE已经安装在这里

C:Program FilesJavajre7bin

您最好的选择是让Eclipse使用已安装的JRE来执行您的JAR,因为另一个选择是要求JAR使用Eclipse JDK/JRE,如果您想将JAR分发到没有安装Eclipse的机器上,这将是有问题的。

在Eclipse中,您可以指定多个JRE并命名它们,创建一个新的JRE并给它指定这个路径,然后您可以转到项目的运行选项并告诉它在运行JAR时使用这个库。

" java版本的可运行jar"不能因为不同的执行环境而有所不同:它是JVM版本。

问题是jar是用比执行环境更高的版本编译的。

Eclipse IDE:

  • in Window/Preferences转到Java/Installed JREs
  • add your 1.7.0_72-b14 JRE
  • 检查新添加的JRE作为默认的工作空间

清理/重新编译项目,并使用 file/Export/jar file

重新导出jar文件

最新更新