有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

windows找到了绝对的java。通过编程从java代码获取exe路径

如果我有一个用户启动的java jar或类文件(假设java路径是在环境变量中设置的),那么我如何从代码中找出java的绝对路径呢。exe/javaw。从中启动此文件的exe

就像在ubuntu上一样,我们可以运行:% which java并显示路径

然而,在windows上,如果我选中System.getenv(),可能会发现多个路径,例如旧版本或新版本。如果通过cmd行,我运行java -version它不会显示路径

你能通过纯java或windows上的命令行告诉我如何找到javaw的位置吗。exe


共 (1) 个答案

  1. # 1 楼答案

    在Windows上,java。图书馆path System属性以包含java的bin目录的路径开始。exe用于运行jar文件

    这是有道理的,因为在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”的后备策略,以防库路径技巧不知何故不起作用

    我已经在Windows7上用Java6和Java7进行了测试。我尝试了32位和64位版本的Java