電子發票Turnkey 3 無法在ARM cpu上執行UI介面-解決方式

Turnkey 3 linux版本,裡面的javafx並未支援aarch64 cpu的元件,原本的javafx 11版也未有可用的元件,所以可以直接把javafx 更新至17.07 LTS版本,支援jdk11 ,再向上就無法使用jdk11開啟了。

Loading library prism_es2 from resource failed: java.lang.UnsatisfiedLinkError: /home/yku/.openjfx/cache/11-ea/libprism_es2.so: /home/yku/.openjfx/cache/11-ea/libprism_es2.so: 無法開啟共用物件: 沒有此一檔案或目錄 (Possible cause: can't load AMD 64-bit .so on a AARCH64-bit platform)
java.lang.UnsatisfiedLinkError: /home/yku/.openjfx/cache/11-ea/libprism_es2.so: /home/yku/.openjfx/cache/11-ea/libprism_es2.so: 無法開啟共用物件: 沒有此一檔案或目錄 (Possible cause: can't load AMD 64-bit .so on a AARCH64-bit platform)
	at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
	at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2445)
	at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2501)
	at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2700)
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2630)
	at java.base/java.lang.Runtime.load0(Runtime.java:768)
	at java.base/java.lang.System.load(System.java:1837)
	at javafx.graphics/com.sun.glass.utils.NativeLibLoader.installLibraryFromResource(NativeLibLoader.java:217)
	at javafx.graphics/com.sun.glass.utils.NativeLibLoader.loadLibraryFromResource(NativeLibLoader.java:197)
	at javafx.graphics/com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:138)
	at javafx.graphics/com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:54)
	at javafx.graphics/com.sun.prism.es2.ES2Pipeline.lambda$static$0(ES2Pipeline.java:63)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at javafx.graphics/com.sun.prism.es2.ES2Pipeline.<clinit>(ES2Pipeline.java:52)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:315)
	at javafx.graphics/com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:218)
	at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:92)
	at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
	at java.base/java.lang.Thread.run(Thread.java:829)

可以建一個maven專案來下載需要的元件,其它classifier不使用的話會下載windows平台的元件,使用<classifier>linux</classifier>會下載AMD平台的linux元件,<classifier>linux-aarch64</classifier>就可以下載支援arm cpu的元件了,可由C:\Users\users\.m2\repository\org\openjfx找到需要的元件。

<dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-base</artifactId>
            <version>17.0.7</version>
            <classifier>linux-aarch64</classifier>
        </dependency>
         <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-graphics</artifactId>
            <version>17.0.7</version>
            <classifier>linux-aarch64</classifier>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>17.0.7</version>
            <classifier>linux-aarch64</classifier>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>17.0.7</version>
            <classifier>linux-aarch64</classifier>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-web</artifactId>
            <version>17.0.7</version>
            <classifier>linux-aarch64</classifier>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-media</artifactId>
            <version>17.0.7</version>
            <classifier>linux-aarch64</classifier>
        </dependency>
        <dependency>
            <groupId>org.controlsfx</groupId>
            <artifactId>controlsfx</artifactId>
            <version>11.1.1</version>
        </dependency>

然後就可以把turnkey/moules/javafx-*.jar都刪除,改用下載回來的元件取代,再執行run_ui.sh就可以執行成功了。

還是有問題可以考慮安裝openjfx

sudo apt install openjfx -y

發表迴響