test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JavaTool.java
branchJDK-8200758-branch
changeset 58416 f09bf58c1f17
parent 58113 885b0543f6e4
child 58994 b09ba68c6a19
--- a/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JavaTool.java	Mon Sep 30 15:59:50 2019 -0400
+++ b/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JavaTool.java	Mon Sep 30 19:11:19 2019 -0400
@@ -25,33 +25,38 @@
 package jdk.jpackage.test;
 
 
-import java.io.File;
 import java.nio.file.Path;
 import java.util.spi.ToolProvider;
 
 public enum JavaTool {
-    JAVAC("javac"), JPACKAGE("jpackage"), JAR("jar");
+    JAVA("java"), JAVAC("javac"), JPACKAGE("jpackage"), JAR("jar"), JLINK("jlink");
 
     JavaTool(String name) {
         this.name = name;
-        path = Path.of(System.getProperty("java.home"), "bin", name).toFile();
-        if (Test.isWindows()) {
-            path = new File(path.toString() + ".exe");
-        }
-        if (!path.exists()) {
-            throw new RuntimeException("Unable to find tool ["
-                    + name + "] at path=[" + path.getAbsolutePath() + "]");
+        this.path = Path.of(System.getProperty("java.home")).resolve(
+                relativePathInJavaHome()).toAbsolutePath().normalize();
+        if (!path.toFile().exists()) {
+            throw new RuntimeException(String.format(
+                    "Unable to find tool [%s] at path=[%s]", name, path));
         }
     }
 
-    File getPath() {
+    Path getPath() {
         return path;
     }
 
-    ToolProvider asToolProvider() {
+    public ToolProvider asToolProvider() {
         return ToolProvider.findFirst(name).orElse(null);
     }
 
-    private File path;
+    Path relativePathInJavaHome() {
+        Path path = Path.of("bin", name);
+        if (TKit.isWindows()) {
+            path = path.getParent().resolve(path.getFileName().toString() + ".exe");
+        }
+        return path;
+    }
+
+    private Path path;
     private String name;
 }