jlink tool doesn't create windows os compatible launcher in resulting runtime image

Ali Ebrahimi ali.ebrahimi1781 at gmail.com
Wed Sep 16 15:55:54 UTC 2015


Hi,

The following patch tries to fix this:

diff --git
a/src/jdk.jlink/share/classes/jdk/tools/jlink/plugins/DefaultImageBuilder.java
b/src/jdk.jlink/share/classes/jdk/tools/jlink/plugins/DefaultImageBuilder.java
---
a/src/jdk.jlink/share/classes/jdk/tools/jlink/plugins/DefaultImageBuilder.java
+++
b/src/jdk.jlink/share/classes/jdk/tools/jlink/plugins/DefaultImageBuilder.java
@@ -172,17 +172,24 @@
             ByteArrayInputStream stream = new
ByteArrayInputStream(res.getByteArray());
             mainClass = ModuleDescriptor.read(stream).mainClass();
             if (mainClass.isPresent()) {
-                Path cmd = root.resolve("bin").resolve(module);
+                Path cmd = root.resolve("bin").resolve(isWindows()?
module+".bat": module);
                 if (!Files.exists(cmd)) {
                     StringBuilder sb = new StringBuilder();
-                    sb.append("#!/bin/sh")
+                    if(!isWindows())
+                        sb.append("#!/bin/sh")
+                                .append("\n");
+                        sb.append("DIR=`dirname $0`")
                             .append("\n");
-                    sb.append("DIR=`dirname $0`")
-                            .append("\n");
-                    sb.append("$DIR/java -m ")
+                        sb.append("$DIR/java -m ")
                             .append(module).append('/')
                             .append(mainClass.get())
                             .append(" $@\n");
+                    } else {
+                        sb.append("%~dp0java -m ")
+                                .append(module).append('/')
+                                .append(mainClass.get())
+                                .append(" $*\n");
+                    }


Best Regards,
Ali Ebrahimi


More information about the jigsaw-dev mailing list