Linux에서 Jar "javafx/application/Application" 시작

Linux에서 Jar "javafx/application/Application" 시작

시스템 정보는 다음과 같습니다.

sudo update-alternatives --config java

 Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      auto mode
* 1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode

Linux 버전은 다음과 같습니다.

cat /proc/version
Linux version 4.19.0-kali3-amd64 ([email protected]) (gcc version 8.2.0 (Debian 8.2.0-16)) #1 SMP Debian 4.19.20-1kali1 (2019-02-14)

자바 버전:

java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment (build 11.0.2+9-Debian-3)
OpenJDK 64-Bit Server VM (build 11.0.2+9-Debian-3, mixed mode, sharing)

.jar을 실행하려고 할 때 오류가 발생합니다.

java -jar any_game.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application
        at java.base/java.lang.ClassLoader.defineClass1(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
        at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
        at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:550)
        at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458)
        at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:398)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
Caused by: java.lang.ClassNotFoundException: javafx.application.Application
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        ... 13 more

dpkg --config에서 Java 버전을 변경해 보았지만 성공하지 못했습니다.

답변1

또 다른 해결 방법은 다음과 같습니다.

  • 설치 openjfx패키지
  • 다음으로 실행 jar:
java --module-path /usr/share/openjfx/lib --add-modules=javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web -jar jarFile.jar

답변2

openjfxJavaFX 애플리케이션을 지원하려면 패키지를 설치해야 하며 , 등의 libopenjfx-java라이브러리 도 설치해야 합니다 libopenjfx-jni. CLASSPATH에 경로를 추가해야 할 수도 있습니다.

export CLASSPATH=$CLASSPATH:/usr/share/java/openjfx/lib/

관련 정보