62 jar 실행 가능 exe4j 를 사용 하여 걸 수 있 는 exe 는 javax/script/Bindings 가 부족 합 니 다.
머리말
최근 실행 가능 한 jar 를 exe 로 포장 하 는 수요 가 있어 서 비교적 흔히 볼 수 있 는 exe4j 를 사용 하 였 습 니 다.
java -jar HelloWorld.jar
실행 가능 한 지 확인 한 다음 에 exe4j 를 사용 하여 실 행 된 jar,Main-Class,jre 의 상대 경로 등 을 설정 하고 마지막 으로 HelloWorld.exe 를 생 성 합 니 다.
그러나 HelloWorld.exe 를 실행 할 때"Caused by:java.lang.NoClassDefFoundError:javax/script/Bindings"를 잘못 보 고 했 습 니 다.
완전한 오류 정 보 는 다음 과 같다.
java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:835)
Caused by: java.lang.NoClassDefFoundError: javax/script/Bindings
at com.hx.tool.HelloWorld.start(HelloWorld.java:21)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
... 1 more
Caused by: java.lang.ClassNotFoundException: javax.script.Bindings
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 10 more
환경 정 보 는 다음 과 같 습 니 다.jdk 12+javafx 8+ exe4j 다운로드 한 현재 홈 페이지 최신 설치 패키지
jre 는 jdk 12 수 동 build 에서 왔 습 니 다."bin\jlink.exe--module-path jmods--add-modules java.desktop--output jre"
시험 해 보다
jdk 자체 의 자바 명령 을 사용 하여 jar 를 실행 하면 정상적으로 실행 할 수 있 기 때 문 입 니 다.
그리고 압축 exe 는 jdk 12 build 에서 나 온 jre 를 사용 합 니 다.
그래서 저 는 jre 아래 자바(lanucher)를 사용 하여 Hello World.jar 를 실 행 했 습 니 다.
잘못된 정보 가 위 와 일치 하 는 것 을 발견 하 였 습 니 다.
java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:835)
Caused by: java.lang.NoClassDefFoundError: javax/script/Bindings
at com.hx.tool.HelloWorld.start(HelloWorld.java:21)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
... 1 more
Caused by: java.lang.ClassNotFoundException: javax.script.Bindings
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 10 more
따라서 build 에서 나 온 jre 는 jdk 자체 에 비해 부족 한 것 이 있 을 수 있 습 니 다.예 를 들 어 이곳 의 script-api 또는 이 두 가지 서로 다른 환경 으로 인해 위의 차 이 를 실 행 했 습 니 다.
해결 방법:jdk 아래 빈,lib 디 렉 터 리 를 jre 디 렉 터 리 아래로 복사 하여 기 존 폴 더 를 덮어 씁 니 다.
jre 교체 후 exe 를 더 블 클릭 하여 실행,정상 실행
jre 와 jdk 가 같은 jar 를 수행 하 는 경우 다른 행동 을 하 는 것 을 알 게 되 었 습 니 다.
예 를 들 면 여기 장면.
완전무결 하 다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
62 jar 실행 가능 exe4j 를 사용 하여 걸 수 있 는 exe 는 javax/script/Bindings 가 부족 합 니 다.최근 실행 가능 한 jar 를 exe 로 포장 하 는 수요 가 있어 서 비교적 흔히 볼 수 있 는 exe4j 를 사용 하 였 습 니 다. 실행 가능 한 지 확인 한 다음 에 exe4j 를 사용 하여 실 행 된 jar...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.