因此,我一直认为在jdk\bin和jdk\jre\bin文件夹中都有的java.exe没有区别。但显然事实并非如此,至少对于java8来说是这样。 我正在测试maverick ssh库,发现当使用位于jdk \ bin中的java.exe时,它无法从sshd服务器提供的加密密码列表中自动协商一个加密密码。 将java.exe更改为jdk所提供的jre中的那个(位于jdk\jre\bin文件夹中)可以让测试应用程序正常工作。那么...可能会出现什么情况来解释这种差异 - 如果它们完全相同,为什么一个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 的路径,我在命令行上没有调整 classpath 或其他任何内容。
使用 WinMerge 比较两者...这两个文件的开头和结尾有一些区别(尤其是结尾)。对我来说都是二进制乱码。