SonarSonic / DrawingBotV3

DrawingBotV3 is a software for converting images into vector art
https://docs.drawingbotv3.com
GNU General Public License v3.0
331 stars 43 forks source link

Update README.md to include requirements for a Raspberry PI ARM32 installation #9

Closed carloshm closed 3 years ago

carloshm commented 3 years ago

Added steps for Raspberry PI installation (Raspbian GNU/Linux 10 (buster)) to include JavaFX support. image

SonarSonic commented 3 years ago

Hey thanks for the PR! Although I think installing JavaFX shouldn't be necessary as it is already included in the jar along with the other dependencies.

What happens if you run on Java 11+ without JFX?

carloshm commented 3 years ago

@SonarSonic it failed :(

$ java -version openjdk version "11.0.11" 2021-04-20 OpenJDK Runtime Environment (build 11.0.11+9-post-Raspbian-1deb10u1) OpenJDK Server VM (build 11.0.11+9-post-Raspbian-1deb10u1, mixed mode)

$ java -jar DrawingBotV3-1.0.11-stable-all.jar OpenJDK Server VM warning: You have loaded library /home/pi/.openjfx/cache/15/libprism_es2.so which might have disabled stack guard. The VM will try to fix the stack guard now. It's highly recommended that you fix the library with 'execstack -c ', or link it with '-z noexecstack'. Loading library prism_es2 from resource failed: java.lang.UnsatisfiedLinkError: /home/pi/.openjfx/cache/15/libprism_es2.so: /home/pi/.openjfx/cache/15/libprism_es2.so: clase ELF errónea: ELFCLASS64 (Possible cause: architecture word width mismatch) java.lang.UnsatisfiedLinkError: /home/pi/.openjfx/cache/15/libprism_es2.so: /home/pi/.openjfx/cache/15/libprism_es2.so: clase ELF errónea: ELFCLASS64 (Possible cause: architecture word width mismatch) at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method) at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442) at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498) at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694) at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2627) at java.base/java.lang.Runtime.load0(Runtime.java:768) at java.base/java.lang.System.load(System.java:1837) at com.sun.glass.utils.NativeLibLoader.installLibraryFromResource(NativeLibLoader.java:214) at com.sun.glass.utils.NativeLibLoader.loadLibraryFromResource(NativeLibLoader.java:194) at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:135) at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:53) at com.sun.prism.es2.ES2Pipeline.lambda$static$0(ES2Pipeline.java:69) at java.base/java.security.AccessController.doPrivileged(Native Method) at com.sun.prism.es2.ES2Pipeline.(ES2Pipeline.java:51) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:315) at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:218) at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:91) at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124) at java.base/java.lang.Thread.run(Thread.java:829) Loading library prism_sw from resource failed: java.lang.UnsatisfiedLinkError: /home/pi/.openjfx/cache/15/libprism_sw.so: /home/pi/.openjfx/cache/15/libprism_sw.so: clase ELF errónea: ELFCLASS64 (Possible cause: architecture word width mismatch) java.lang.UnsatisfiedLinkError: /home/pi/.openjfx/cache/15/libprism_sw.so: /home/pi/.openjfx/cache/15/libprism_sw.so: clase ELF errónea: ELFCLASS64 (Possible cause: architecture word width mismatch) at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method) at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442) at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498) at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694) at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2627) at java.base/java.lang.Runtime.load0(Runtime.java:768) at java.base/java.lang.System.load(System.java:1837) at com.sun.glass.utils.NativeLibLoader.installLibraryFromResource(NativeLibLoader.java:214) at com.sun.glass.utils.NativeLibLoader.loadLibraryFromResource(NativeLibLoader.java:194) at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:135) at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:53) at com.sun.prism.sw.SWPipeline.lambda$static$0(SWPipeline.java:42) at java.base/java.security.AccessController.doPrivileged(Native Method) at com.sun.prism.sw.SWPipeline.(SWPipeline.java:41) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:315) at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:218) at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:91) at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124) at java.base/java.lang.Thread.run(Thread.java:829) Graphics Device initialization failed for : es2, sw Error initializing QuantumRenderer: no suitable pipeline found java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280) at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:244) at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:261) at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267) at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158) at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658) at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94) at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124) ... 1 more Exception in thread "main" java.lang.RuntimeException: No toolkit found at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:273) at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267) at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158) at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658) at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195) at java.base/java.lang.Thread.run(Thread.java:829)

$ sudo update-alternatives --config java $ java -version openjdk version "13-BellSoft" 2019-09-17 OpenJDK Runtime Environment (build 13-BellSoft+33) OpenJDK Server VM (build 13-BellSoft+33, mixed mode) $ java -jar DrawingBotV3-1.0.11-stable-all.jar may. 03, 2021 7:55:27 P. M. drawingbot.FXApplication start INFORMACIÓN: Loading Configuration may. 03, 2021 7:55:29 P. M. drawingbot.files.ConfigFileHandler setupConsoleOutputFile INFORMACIÓN: Renamed old output file may. 03, 2021 7:55:29 P. M. drawingbot.files.ConfigFileHandler setupConsoleOutputFile INFORMACIÓN: Renamed old log file may. 03, 2021 7:55:29 P. M. drawingbot.FXApplication start INFORMACIÓN: Loading API may. 03, 2021 7:55:29 P. M. drawingbot.FXApplication start INFORMACIÓN: Loading Registry may. 03, 2021 7:55:36 P. M. drawingbot.FXApplication start INFORMACIÓN: Init DrawingBotV3 may. 03, 2021 7:55:36 P. M. drawingbot.FXApplication start INFORMACIÓN: Init Observable Drawing Set may. 03, 2021 7:55:37 P. M. drawingbot.FXApplication start INFORMACIÓN: Loading Json Files may. 03, 2021 7:55:46 P. M. javafx.scene.Scene ADVERTENCIA: System can't support ConditionalFeature.SCENE3D may. 03, 2021 7:55:47 P. M. javafx.scene.Scene ADVERTENCIA: System can't support antiAliasing

AurelioB commented 3 years ago

I'm getting a similar error on a macbook pro with M1 (arm). I installed a x86 version of the jdk which worked, but has some graphical glitches.

Installing a native arm jdk that included javafx seemed to solve the issue:

https://bell-sw.com/pages/downloads/#/java-16-current (choosing full jdk)

SonarSonic commented 3 years ago

@AurelioB @carloshm Thank you both for your pull requests & time - as I'm unfamiliar with these platforms is there a way I could simplify the two explanations and to cover all arm processors? For example you mention different versions of the JDK are mentioned, do they both work on Liberica JDK 16 & 11?