Can't restart my app with the latest JDK, regression.

Kevin Rushforth kevin.rushforth at oracle.com
Mon Feb 5 19:03:48 UTC 2024


For others who might be curious, Davide filed a bug via 
bugreport.java.com and it is now available here:

https://bugs.openjdk.org/browse/JDK-8325203

It is almost certainly a bug in jpackage.

-- Kevin


On 2/5/2024 2:01 AM, Davide Perini wrote:
> Hi John,
> thanks for the answer.
>
> The problem happen even with other JDKs like the Azul, corretto...
>
> The weird thing is that to reproduce it you need to package the 
> program with jpackage and then execute the program using the generated 
> exe.
>
> This is the only code needed to reproduce the issue.
>
> public static void main(String... args) throws IOException {
>          String[] cmdToRunUsingArgs = {"cmd.exe", "/C", "C:\\Program Files\\Notepad++\\notepad++.exe"};
>          Runtime.getRuntime().exec(cmdToRunUsingArgs);
>          Executors.newSingleThreadScheduledExecutor().schedule(() -> {
>              System.exit(0);
>          }, 30, TimeUnit.SECONDS);
>      }
>
> It's very weird because the problem does not happen with the previous 
> minor version of the JDK21, the JDK 21.01_12.
>
> I'm pretty sure now that this isn't related to JavaFX since the 
> problem can be reproduced even without JavaFX.
>
> Problem must be in the JPackage.
>
> Thanks
> Davide
>
>
>
> Il 04/02/2024 18:17, John Hendrikx ha scritto:
>>
>> Hi,
>>
>> Does that Temurin build contain JavaFX, or is it just a new Temurin 
>> build?  Did you change anything else besides the JDK used?  You could 
>> try other JDK's (openjdk, corretto, etc) as well.
>>
>> Is there anything being logged that may indicate what went wrong?
>>
>> That all said, it seems really unlikely this is related to JavaFX.
>>
>> If System.exit(0) is killing both the new and old application, then 
>> it wasn't really spawned independently, so you can look into that 
>> (you could put a delay there, and see with a tool like `top` or Task 
>> Manager says, and see whether the restarted app is a child process or 
>> not).
>>
>> It's also possible the problem is in the tools/settings used to 
>> create the ".exe", so see if you changed anything there.
>>
>> For more info, tips or other ways of doing restarts: 
>> https://stackoverflow.com/questions/4159802/how-can-i-restart-a-java-application
>>
>> --John
>>
>>
>> On 04/02/2024 02:49, Davide Perini wrote:
>>> Hi there,
>>> my JavaFX 21.0.2 app experienced a very weird regression when 
>>> switching from Temurin
>>> OpenJDK21U-jdk_x64_windows_hotspot_21.0.1_12
>>> to
>>> OpenJDK21U-jdk_x64_windows_hotspot_21.0.2_13
>>>
>>> I use this method to restart my app.
>>>
>>> public void restart() {
>>>      // path to my exe app plus one string argument
>>>      String[] cmdToRunUsingArgs = {"C:\Users\sblantipodi\AppData\Local\Firefly Luciferin\Firefly 
>>> Luciferin.exe","string argument"};
>>>      try {
>>>          Runtime.getRuntime().exec(cmdToRunUsingArgs);
>>>      }catch (SecurityException | IOException e) {
>>>          log.error(e.getMessage());
>>>      }
>>>      javafx.application.Platform.exit();
>>>      System.exit(0);
>>> }
>>>
>>> It worked well since years until JDK 21.0.2_13.
>>> If I revert back to 21.0.1_12 it works well.
>>>
>>> That method should start a new instance of the app, and close the 
>>> "old instance".
>>>
>>> With JDK 21.0.2_13, it closed the running instance but does not open 
>>> a new instance.
>>>
>>> I don't know if open a bugreport to JDK but before opening the bug 
>>> report I would like to ask you if that method to restart the app is 
>>> correct or if you think that I can use a better way.
>>>
>>> Thanks
>>> Davide
>>>
>>>
>>>
>>>
>>>
>>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20240205/234391a7/attachment-0001.htm>


More information about the openjfx-dev mailing list