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

Jim Laskey (Oracle) james.laskey at oracle.com
Wed Sep 16 16:46:22 UTC 2015


Note that before we can accept external changes you must complete an OCA http://www.oracle.com/technetwork/community/oca-486395.html .

Thank you,

— Jim




> On Sep 16, 2015, at 12:55 PM, Ali Ebrahimi <ali.ebrahimi1781 at gmail.com> wrote:
> 
> 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