1

我正在尝试编译一个开源软件。构建工作正常并生成一个 jar 文件“five-server.jar”。当我尝试从 cmd 运行此文件时,出现这些错误。

C:\Users\vickey\code\five-server\dist\main>java -jar five-server.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/SWTError
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.SWTError
        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)
Could not find the main class: org.devtcg.five.Main. Program will exit.

有什么建议吗?

4

3 回答 3

5

SWT Jar 文件依赖于平台。见http://www.jarfinder.com/index.php/java/info/org.eclipse.swt.SWTError

例如在 Windows 上,一个合适的 jar 是:org.eclipse.swt.win32.win32.x86_3.1.0.jar

或在 Mac OS X 上:swt-macosx-3.0m7.jar

等等。如果您添加此依赖项,例如您使用的是 32 位还是 64 位库,您可能会遇到调用类型的后续问题。

这些天来,这种依赖问题经常出现,这太糟糕了:-(

于 2012-08-29T15:02:54.620 回答
1

您必须设置类路径,使其至少包含 org.eclipse.swt.SWTError 类或包含它的 jar:

java -classpath path/to/jar/containing/org.eclipse.swt.SWTError -jar five-server.jar

您还应该在清单文件中设置 Main-class 属性five-server.jar

于 2012-08-14T19:28:49.863 回答