在 Windows 上,java.library.path System Property 以 bin 目录的路径开头,该目录包含用于运行 jar 文件的任何 java.exe。
这是有道理的,因为在Windows上,任何可执行文件查找DLL文件的第一个地方是包含可执行文件本身的目录。因此,很自然地,当JVM运行时,它查找 DLL 的第一个地方是包含 java.exe的目录。
您可以获取 java 的路径.exe如下所示:
final String javaLibraryPath = System.getProperty("java.library.path");
final File javaExeFile = new File(
javaLibraryPath.substring(0, javaLibraryPath.indexOf(';')) + "\\java.exe"
);
final String javaExePath =
javaExeFile.exists() ? javaExeFile.getAbsolutePath() : "java";
此代码是特定于 Windows 的 - 我对路径分隔符进行了硬编码(;)和文件分隔符 ()。我还将回退设置为“java”,以防库路径技巧以某种方式不起作用。
我已经在Windows 7上的Java 6和7中对此进行了测试。我尝试了32位和64位版本的Java。