exe4j 给我一个记事本错误文件
exe4j gives me a notepad error file
我试图从 jar 文件制作一个 exe。它运行良好,当我 运行 宁它时,它给出了一个这样的记事本错误文件,
(当我在 netbeans(shift+F6)上 运行 它工作正常)
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError:
org/netbeans/lib/awtextra/AbsoluteLayout at
experiments.mp3Player.initComponents(mp3Player.java:115) at
experiments.mp3Player.(mp3Player.java:26) at
experiments.Main.run(Main.java:17) at
java.awt.event.InvocationEvent.dispatch(Unknown Source) at
java.awt.EventQueue.dispatchEventImpl(Unknown Source) at
java.awt.EventQueue.access0(Unknown Source) at
java.awt.EventQueue.run(Unknown Source) at
java.awt.EventQueue.run(Unknown Source) at
java.security.AccessController.doPrivileged(Native Method) at
java.security.ProtectionDomain.doIntersectionPrivilege(Unknown
Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at
java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown
Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at
java.awt.EventDispatchThread.run(Unknown Source) Caused by:
java.lang.ClassNotFoundException:
org.netbeans.lib.awtextra.AbsoluteLayout at
java.net.URLClassLoader.run(Unknown Source) at
java.net.URLClassLoader.run(Unknown Source) at
java.security.AccessController.doPrivileged(Native Method) at
java.net.URLClassLoader.findClass(Unknown Source) at
java.lang.ClassLoader.loadClass(Unknown Source) at
sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at
java.lang.ClassLoader.loadClass(Unknown Source) ... 17 more*
这是因为您已针对 netbeans jar 对其进行了编译,但它们未包含在 class 路径中。不管怎样,您都必须让它们进入 class 路径。您可以将这些库包含在 jar 导出中,它们应该会自动显示,或者您可以在启动 exe 时在 class 路径中硬编码它们的位置(编辑它的启动脚本)。
我推荐第一个选项,因为它在您从一个系统转到另一个系统时更加便携。
在 exe4j 中,您需要包含您的应用程序使用的所有依赖 Jar。当您使用 Netbeans 表单编辑器和它的 "default" 布局管理器时,您需要包含它的库 Jar,它不是默认 JRE 的一部分。
浏览到您的项目目录并查看 dist\lib
目录。您需要包含
中列出的所有 jar 文件
我试图从 jar 文件制作一个 exe。它运行良好,当我 运行 宁它时,它给出了一个这样的记事本错误文件, (当我在 netbeans(shift+F6)上 运行 它工作正常)
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/netbeans/lib/awtextra/AbsoluteLayout at experiments.mp3Player.initComponents(mp3Player.java:115) at experiments.mp3Player.(mp3Player.java:26) at experiments.Main.run(Main.java:17) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access0(Unknown Source) at java.awt.EventQueue.run(Unknown Source) at java.awt.EventQueue.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.netbeans.lib.awtextra.AbsoluteLayout at java.net.URLClassLoader.run(Unknown Source) at java.net.URLClassLoader.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 17 more*
这是因为您已针对 netbeans jar 对其进行了编译,但它们未包含在 class 路径中。不管怎样,您都必须让它们进入 class 路径。您可以将这些库包含在 jar 导出中,它们应该会自动显示,或者您可以在启动 exe 时在 class 路径中硬编码它们的位置(编辑它的启动脚本)。
我推荐第一个选项,因为它在您从一个系统转到另一个系统时更加便携。
在 exe4j 中,您需要包含您的应用程序使用的所有依赖 Jar。当您使用 Netbeans 表单编辑器和它的 "default" 布局管理器时,您需要包含它的库 Jar,它不是默认 JRE 的一部分。
浏览到您的项目目录并查看 dist\lib
目录。您需要包含