RFR: JDK-8317308 JavaFX Developer build broken on Windows - NativeLibrary file contains invalid character ':'

Florian Kirmaier fkirmaier at openjdk.org
Sun Oct 1 11:50:44 UTC 2023


On Fri, 29 Sep 2023 10:40:52 GMT, Florian Kirmaier <fkirmaier at openjdk.org> wrote:

> The format of the timestamp has changed to ISO 8601. This contains the “:” Character.
> A copy of the dll is saved at <home>/.openjfx/cache/" + jfxVersion + "/" + arch .
> On Windows, the character ‘:’ is invalid in files, causing internal errors.
> 
> This only happens on developer/non-hudson builds, because on hudson-builds, the timestamp is omitted.
> 
> I just replaced the disallowed character when creating the native library.

I have to admit that something went wrong here on my side.
On my fork, the code to add the "-internal" for non-hudson builds is removed. Because my builds aren't internal, and I'm also not using hudson.

´´´
    // The version OPT field matches the regular expression "([-a-zA-Z0-9.]+)".
    // For the ISO 8601 basic format, use the pattern "yyyyMMdd'T'HHmmssX".
    def zonedTime = ZonedDateTime.ofInstant(buildInstant, ZoneOffset.UTC)
    def formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HHmmss")
    String versionTimestamp = zonedTime.format(formatter)
    relSuffix = "-internal"
    relOpt = "-${versionTimestamp}"
´´´

After I ran into Windows issues, I assumed this was a regression that affected everyone.

Can not create cache at C:\Users\Besi.openjfx\cache\21.0.2.2-jpro+0-2023-09-20T18:43:31Z\amd64
Loading library api-ms-win-core-errorhandling-l1-1-0 from resource failed: java.io.IOException: Can not create cache at C:\Users\Besi\AppData\Local\Temp.openjfx_Besi\cache\21.0.2.2-jpro+0-2023-09-20T18:43:31Z\amd64
java.io.IOException: Can not create cache at C:\Users\Besi\AppData\Local\Temp.openjfx_Besi\cache\21.0.2.2-jpro+0-2023-09-20T18:43:31Z\amd64
        at com.sun.glass.utils.NativeLibLoader.cacheLibrary(NativeLibLoader.java:271)
        at com.sun.glass.utils.NativeLibLoader.installLibraryFromResource(NativeLibLoader.java:216)
        at com.sun.glass.utils.NativeLibLoader.loadLibraryFromResource(NativeLibLoader.java:198)
        at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:140)
        at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:56)
        at com.sun.javafx.tk.Toolkit.loadMSWindowsLibraries(Toolkit.java:172)
        at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:213)
        at com.sun.javafx.perf.PerformanceTracker.logEvent(PerformanceTracker.java:100)
        at javafx.scene.Node.<clinit>(Node.java:417)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:375)
        at com.jpro.internal.server.JProStarter$.startFromBoot(JProStarter.scala:27)
        at com.jpro.internal.server.JProStarter$.main(JProStarter.scala:19)
        at com.jpro.internal.server.JProStarter.main(JProStarter.scala)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at com.jpro.boot.JProBoot.callMain(JProBoot.java:88)
        at com.jpro.boot.JProBoot.lambda$startInThread$0(JProBoot.java:99)
        at java.base/java.lang.Thread.run(Thread.java:833)


Nevertheless, setting a custom version number shouldn't end in a runtime error.
Maybe it's also misleading to call this "Hudson-build" instead of release build.

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

PR Comment: https://git.openjdk.org/jfx/pull/1251#issuecomment-1742055066


More information about the openjfx-dev mailing list