RFR: 8269761: idea.sh missing .exe suffix when invoking javac on WSL [v3]

Jorn Vernee jvernee at openjdk.java.net
Mon Jul 5 11:00:54 UTC 2021


On Mon, 5 Jul 2021 10:40:15 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:

>> From the JBS issue:
>> 
>> At the end, idea.sh tries to invoke javac, but when running on WSL this results in the following error:
>> 
>>     bin/idea.sh: line 249: /mnt/c/progra~1/java/jdk-16/bin/javac: No such file or directory
>> 
>> Adding a .exe suffix to the javac path fixes this issue, which can be done just for WSL.
>
> Jorn Vernee has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains four additional commits since the last revision:
> 
>  - Merge branch 'master' into Idea_Exe
>  - Add .exe suffix when invoking javac on WSL
>  - use CYGPATH variable instead of calling cygpath directly
>  - Allow specifying conf to idea.sh

Hmm, now that I'm looking again, I see that an earlier block also tries to set `JAVAC` to `javac.exe` on WSL, but it never gets executed because `CYGPATH` is set in my environment:


if [ "x$CYGPATH" != "x" ] ; then ## CYGPATH may be set in env.cfg
  ...
  JAVAC=javac
elif [ "x$WSL_DISTRO_NAME" != "x" ]; then
  ...
  JAVAC=javac.exe
else


Of course, when I remove my fix, and move the `"x$WSL_DISTRO_NAME" != "x"` to the front, this also fails on a linux boot JDK because `javac.exe` doesn't exist. If I remove the `.exe` suffix then the usage of `realpath` in that same block makes the script work on a linux boot JDK, but fails again on a Windows boot JDK because of the missing .exe suffix.

I'll try to see if I can make the existing logic work on both JDK types

-------------

PR: https://git.openjdk.java.net/jdk/pull/4656


More information about the ide-support-dev mailing list