【发布时间】:2013-12-30 23:39:00
【问题描述】:
首先。我是 Java 编程的新手和新手。
我在运行 WindowBuilder 和 SWT (swt.jar) 的 Eclipse Kepler 4.3.1(32 位)上创建了一个 Java Eclipse“SWT”“应用程序窗口”。设计视图是一个复合视图。
Java 应用程序在 Eclipse 中运行良好。我只需按下播放按钮即可。
问题: 发行
java -cp 。 PkgNetAccelerator32.netAcceleratorApp
产生以下错误消息:
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/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
我正在做一些研究,一些关于其他问题的帖子表明解决方法是创建清单。我看到一篇文章是这样说的:
- 选择 src 文件夹,右键选择导出,然后选择 Java,然后选择 JAR 文件,指定 Manifest.jar 和文件夹路径,确保选中“生成清单文件”,然后按完成。李>
我创建了清单文件并尝试使用以下命令行启动它:
java -jar ../Manifest.jar -cp . PkgNetAccelerator32.netAcceleratorApp
这产生了与上面相同的错误消息。
我看到另一篇文章说应该在 swt.jar 文件中添加,但这由清单处理。不?指定“swt.jar”而不是我创建的清单会导致错误消息:
no main manifest attribute, in ../swt.jar
这个错误信息是有道理的。
我很茫然。如何运行 java 应用程序?
我正在我的 Windows 7 Professional 64 位桌面上进行测试,但我也需要在 CENTOS 上运行。这应该没问题,因为我认为无论 Windows 上的修复是什么,都可以在 CENTOS 上运行。
更新: 我将两个 lib 文件放在 /lib 文件夹中以匹配给出的答案。然后我发出以下命令行并收到以下错误消息。
C:\SoftDev\Projects\NetAccelerator\JavaWorkspace\NetAccelerator32>java -cp "bin/*;lib/*" PkgNetAccelerator32.netAcceleratorApp
Exception in thread "main" java.lang.UnsatisfiedLinkError: Cannot load 32-bit SWT libraries on 64-bit JVM
at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
at org.eclipse.swt.internal.C.<clinit>(Unknown Source)
at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source)
at PkgNetAccelerator32.netAcceleratorApp.open(netAcceleratorApp.java:43)
at PkgNetAccelerator32.netAcceleratorApp.main(netAcceleratorApp.java:33)
我发现了以下article,它生成了一个可以工作的命令行,只是这对于发送来说是不合理的。我更愿意使用答案。
【问题讨论】:
-
您将
classpath(-cp) 指定为.,您的工作目录中有swt.jar吗?工作目录中有哪些文件? -
当前/工作目录是项目的 bin 文件夹的内容。我将两个jar文件放在父文件夹中。 Java 不喜欢将 jar 文件与要运行的文件放在同一文件夹中。
-
我认为解决方案很简单。我正在尝试从命令行运行我的第一个 Java 应用程序窗口,所以这部分开发过程对我来说是全新的。
标签: java eclipse jar swt windowbuilder