Fixed: Ref #824: Unable to launch beatoraja 0.8.8 with JavaFX problems.
-
Problem:
Though JavaFX is removed from JDK since Java11 and Java11+. Now it's a common maven dependency in (https://repo1.maven.org/maven2/org/openjfx/). beatoraja can not start with beatoraja0.8.8-modernchic.
E:\d\games\bms-install\beatoraja0.8.8-modernchic> .\beatoraja-config.bat
E:\d\games\bms-install\beatoraja0.8.8-modernchic>REM *** Set system-wide "_JAVA_OPTIONS" environment variable to use OpenGL pipeline (improved performance of > 30 potentially. Also use anti-aliasing for non-LR2 fonts, and finally allow Swing framework to utilize AA and GTKLookAndFeel for config window. ***
E:\d\games\bms-install\beatoraja0.8.8-modernchic>set _JAVA_OPTIONS='-Dsun.java2d.opengl=true -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
E:\d\games\bms-install\beatoraja0.8.8-modernchic>pushd E:\d\games\bms-install\beatoraja0.8.8-modernchic\
E:\d\games\bms-install\beatoraja0.8.8-modernchic>java -Xms1g -Xmx4g -jar beatoraja.jar
Picked up _JAVA_OPTIONS: '-Dsun.java2d.opengl=true -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
错误: 找不到或无法加载主类 bms.player.beatoraja.MainLoader
原因: java.lang.NoClassDefFoundError: javafx/application/Application
E:\d\games\bms-install\beatoraja0.8.8-modernchic>popd
PS E:\d\games\bms-install\beatoraja0.8.8-modernchic>
-
Workaround:
Download JavaFX and OpenJDK, then change
java -Xms1g -Xmx4g -jar beatoraja.jar
in beatoraja0.8.8-modernchic/beatoraja-config.bat
// === Step 1
Get JDK: Use JBR
D:\f\tools\idea\jbr\bin> java -version
openjdk version "17.0.11" 2024-04-16
OpenJDK Runtime Environment JBR-17.0.11+1-1207.30-jcef (build 17.0.11+1-b1207.30)
OpenJDK 64-Bit Server VM JBR-17.0.11+1-1207.30-jcef (build 17.0.11+1-b1207.30, mixed mode)
So just copy IntellIJ-IDEA/jbr/ to e:/d/games/bms-install/jbr-jdk17/
// === Step 2
JavaFX:
Go to https://openjfx.io/ and click DOWNLOAD, then link to https://gluonhq.com/products/javafx/
↑ Select the element like the picture.
- Be Careful: JavaFX Version is the same as your JDK Version, so here select 17.x.x
TypeSelect toSDKis OK.
Downlad, unzip, and put it to e:/d/games/bms-install/javafx-sdk-17.0.13/
// === Step 3
Now the directory is:
+- bms-install/
+- beatoraja0.8.8-modernchic/
+- beatoraja.jar
+- beatoraja-config.bat
+- bgm/
+- course/
+- // other files and directories
+- jbr-jdk17/
+- bin/
+- java.exe
+- conf/
+- include/
+- // other files and directories
+- javafx-sdk-17.0.13/
+- bin/
+- legal/
+- lib/
+- src.zip
Then change the line
java -Xms1g -Xmx4g -jar beatoraja.jar
in bms-install/beatoraja0.8.8-modernchic/beatoraja-config.bat to
"../jbr-jdk17/bin/java" -Xms1g -Xmx4g --module-path "../javafx-sdk-17.0.13/lib/" --add-modules javafx.controls --add-modules javafx.fxml -jar beatoraja.jar
Now we can play beatoraja0.8.8-modernchic/beatoraja-config.bat as same as beatoraja0.8.8-jre-win64/beatoraja.exe without change any global environment and using any OpenJDK (Of course JDK17+) you like.
Here is the completed file of bms-install/beatoraja0.8.8-modernchic/beatoraja-config.bat
REM *** Set system-wide "_JAVA_OPTIONS" environment variable to use OpenGL pipeline (improved performance of > 30% potentially. Also use anti-aliasing for non-LR2 fonts, and finally allow Swing framework to utilize AA and GTKLookAndFeel for config window. ***
set _JAVA_OPTIONS='-Dsun.java2d.opengl=true -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
pushd %~dp0
"../jbr-jdk17/bin/java" -Xms1g -Xmx4g --module-path "../javafx-sdk-17.0.13/lib/" --add-modules javafx.controls --add-modules javafx.fxml -jar beatoraja.jar
popd
If you just want to use the java in global environment, download the JavaFX (Same version as your JDK), and change
java -Xms1g -Xmx4g -jar beatoraja.jar
to
java -Xms1g -Xmx4g --module-path "../javafx-sdk-path/lib/" --add-modules javafx.controls --add-modules javafx.fxml -jar beatoraja.jar
Ref #824
Use old version of Oracle JDK8 can also solve mac problem, here's mine:
java version "1.8.0_361"
Java(TM) SE Runtime Environment (build 1.8.0_361-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.361-b09, mixed mode)
E:\d\games\bms-install\beatoraja0.8.8-modernchic>
E:\d\games\bms-install\beatoraja0.8.8-modernchic>java -version
openjdk version "1.8.0_422"
OpenJDK Runtime Environment Corretto-8.422.05.1 (build 1.8.0_422-b05)
OpenJDK 64-Bit Server VM Corretto-8.422.05.1 (build 25.422-b05, mixed mode)
E:\d\games\bms-install\beatoraja0.8.8-modernchic>
E:\d\games\bms-install\beatoraja0.8.8-modernchic>
E:\d\games\bms-install\beatoraja0.8.8-modernchic>"beatoraja-config.bat"
E:\d\games\bms-install\beatoraja0.8.8-modernchic>REM *** Set system-wide "_JAVA_OPTIONS" environment variable to use OpenGL pipeline (improved performance of > 30 potentially. Also use anti-aliasing for non-LR2 fonts, and finally allow Swing framework to utilize AA and GTKLookAndFeel for config window. ***
E:\d\games\bms-install\beatoraja0.8.8-modernchic>set _JAVA_OPTIONS='-Dsun.java2d.opengl=true -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
E:\d\games\bms-install\beatoraja0.8.8-modernchic>pushd E:\d\games\bms-install\beatoraja0.8.8-modernchic\
E:\d\games\bms-install\beatoraja0.8.8-modernchic>java -jar beatoraja.jar
Picked up _JAVA_OPTIONS: '-Dsun.java2d.opengl=true -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: bms/player/beatoraja/MainLoader has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:621)
E:\d\games\bms-install\beatoraja0.8.8-modernchic>popd
E:\d\games\bms-install\beatoraja0.8.8-modernchic>
@Catizard beatoraja 0.8.8 need JDK17 and JDK17+, it's the reason that I create Issue 834.
And beatoraja 0.8.7 can run successful with JDK1.8.
@Catizard beatoraja 0.8.8 need
JDK17andJDK17+, it's the reason that I create Issue 834.And beatoraja 0.8.7 can run successful with
JDK1.8.
My bad, I didn't notice that