On Fri, 25 Mar 2022 18:12:23 GMT, Glavo <d...@openjdk.java.net> wrote:
> Currently, OpenJFX extracts the native library into a local folder and loads > it when it is not part of the JRE. > > Now we have a notable problem with the fact that a platform may actually run > programs of multiple CPU architectures. > > Most commonly, 32-bit x86 applications can be executed on Windows AMD64. In > addition to this, ARM machines may also execute AMD64 programs by transpiling. > > For OpenJFX of different architectures on the same system, their native > libraries have the same file name, but their contents are different. Since > they will try to unpack the native library into the same folder, this will > cause file conflicts. > > A practical example is when I run the same JavaFX application with both > 32-bit and 64-bit Java on a Windows AMD64 platform, and the application that > starts later crashes because it cannot unzip the native libraries: > > Crash logs (The length exceeds the GitHub limit): > https://paste.ubuntu.com/p/NZBK3pNrh7/ > > Here I avoid the problem by adding `os.arch` to the cache path. > > I ran the tests on Ubuntu 20.04 after the modification and no tests were > broken. This looks fine to me, but @johanvos or @tiainen will want to test it. ------------- PR: https://git.openjdk.java.net/jfx/pull/762