【发布时间】:2012-10-16 05:19:43
【问题描述】:
好吧,我用 Eclipse 将我的应用程序导出到 JAR 中,但现在每当我尝试运行它时,我都会得到:“发生 Java 异常”。当我尝试通过命令行运行它时,它说:
C:\Users\Arturas>java -jar D:\Dropbox\EclipseWorkspace\Exports\Dantracio_skaiciu
oklis3.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widge
ts/Composite
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Composite
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.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)
... 6 more
C:\Users\Arturas>
有什么解决办法吗?我只是因为这个而讨厌 java...当您希望它在桌面上运行时,它永远无法运行...对不起,我真的为此感到压力很大,我反应过度...
有什么想法会导致这种情况吗?我也不在其他计算机上工作。现在它使用的是 Java 1.7。该应用程序在 Eclipse 上完美运行。
【问题讨论】:
-
创建 JAR 时,它只包含您编写的类,不包含任何第三方依赖项。 (如 SWT。)在 IDE 之外运行项目时,您需要使用
-cp参数到java.exe来创建一个包含类路径上的这些依赖项的启动器。 -
FWIW,Eclipse 应该能够生成某种分发包,将您的应用程序所需的所有
.jars 放在一个目录中。 -
@millimoose 嗯,我想这就是我需要的,我需要它将所有东西打包到一个 Jar 中(这就是我选择导出到 jar 的原因?)。那怎么办呢?
-
导出到 JAR 几乎总是意味着“将 my 代码导出到 JAR 中”。 (这个想法是您负责为您的应用程序设置所需的 classpath。)第三方 JAR 必须重新打包,或手动包含在 classpath 中。 digitaljoel 的回答指出了一些可以进行这种重新打包的工具。
-
将您的项目导出为可运行的 jar 以获得快速解决方案。这应该包括依赖的罐子。长期 - 您需要确定是什么导致 org/eclipse/swt/widgets/Composite 包含在您的程序中并将其删除。
标签: java eclipse exception jar export