从jdk到(包含)jre的java.exe差异是什么?

时间:2014-12-23 15:06:43

标签: java

所以,我一直认为位于java.exe的{​​{1}}和jdk\bin文件夹中的jdk\jre\bin没有区别。显然,事实并非如此,当然不是java8。

我正在测试特立独行的ssh库,发现当使用java.exe中的jdk\bin时,它不会从sshd服务器提供的列表中自动协商加密密码。从jdk提供的jre(在jdk\jre\bin文件夹中)更改用于此的java.exe,让测试应用程序正常工作。

那么...什么可以解释差异 - 为什么一个java.exe会起作用而另一个不起作用,如果它们都是相同的那么?

它们在表面上看起来是一样的:

C:\Program Files\Java\jdk1.8.0_20>dir bin\java.exe

08/22/2014  03:35 PM           190,856 java.exe

C:\Program Files\Java\jdk1.8.0_20>dir jre\bin\java.exe

08/22/2014  03:35 PM           190,856 java.exe

但必须在引擎盖下不同:

C:\Program Files\Java\jdk1.8.0_20>diff bin\java.exe jre\bin\java.exe
Files bin\java.exe and jre\bin\java.exe differ

修改

我确实审核了建议重复的问题,但它没有解决我的问题。

二进制文件的版本显示相同:

C:\Program Files\Java\jdk1.8.0_20>bin\java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)

C:\Program Files\Java\jdk1.8.0_20>jre\bin\java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)

除了java.exe的路径之外,我没有调整命令行上的类路径或其他任何内容。

使用WinMerge比较两个...两个文件的开始和结束(更多)有一些差异。所有的二进制狼吞虎咽地对我说。

enter image description here

1 个答案:

答案 0 :(得分:2)

重新使用该库并获得不同的结果,这几乎肯定与java.exe无关,而是与JDK安装与JRE安装所使用的类路径和jar有关。

重新提供不同的文件,不仅仅是你:我在其上挖掘了一台带有(旧版本)Oracle Java8的Windows 8.1机器,它是同样的事情:尺寸,日期和版本匹配,内容不是相当。对于我的Linux机箱而言,这是不正确的,其中包含Oracle的Java8,其中jdk/bin/javajdk/jre/bin/java文件是相同的(而不仅仅是符号链接)。我的猜测是它与优化默认值有关,但与您的ssh库问题无关。