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 good, and I can't see possible regression (e.g. issues with 
non-existing parent directories, or files that have the same name as the 
directory that will be created by this PR). It is indeed very useful given the 
increase in potential architectures.
I'm doing a few more automatic tests before approving.

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

PR: https://git.openjdk.java.net/jfx/pull/762

Reply via email to