1

我讨厌用这个开始一个帖子,但我是 Java 新手……我已经按照本教程创建了一个套接字服务器(在 Eclipse 中挖掘)。我可以在 Eclipse 中运行服务器,一切都很好。但是当我尝试导出项目时,我不知道如何运行它。我不断收到此错误(取决于我的运行方式)

Exception in thread "main" java.lang.NoClassDefFoundError: xsocketserver/Main
Caused by: java.lang.ClassNotFoundException: xsocketserver.Main
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)

我读过这个问题与设置的类路径有关。我尝试了以下方法:

java -cp libs/xSocket-2.8.12.jar xsocketserver.Main
java -jar xSocketServer.jar    
java -classpath xSocketServer:xSocketServer/libs/xSocket-2.8.12.jar xsocketserver.Main

加上许多其他人。JAR 中的文件结构如下:

xSocketServer.jar
    -> xsocketserver
        -> Main.class
        -> xSocketDataHandler.class
    -> META-INF
        -> MANIFEST.MF
    -> libs
        -> xSocket-2.8.12.jar

顺便说一句,我尝试添加自己的清单文件,其中包含Class-Path但当我检查它时,它总是显示:

Manifest-Version: 1.0
Main-Class: xsocketserver.Main

根据我在 Google 中看到的点击次数,我猜这是一个常见问题,但我无法理解我做错了什么。可能是错误的导出设置??

4

2 回答 2

1

我不相信一个 jar 文件可以包含另一个 jar(因为你已经包含了 xSocket-2.8.12.jar)。如果 xSocket 是您自己的代码,请将其直接包含在“外部”jar 中。

查看 http://www.velocityreviews.com/forums/t143595-jars- contains-jars.html 和 Classpath,包括 JAR 中的 JAR

否则它看起来对我来说是正确的。确保您没有尝试运行旧版本的 jar。(删除 jar 并确保 eclipse 导出一个新的。)

你是如何从 Eclipse 中导出 .jar 文件的?生成的 jar 文件通常基于您的运行配置之一。确保使用在 eclipse 中工作时使用的那个。

除非您已经尝试过,否则请尝试按照以下步骤操作(在下面的站点中列出)

http://forums.sun.com/thread.jspa?threadID=5358121

1-右键单击您的项目并选择导出选项。将弹出一个导出窗口。

2-从弹出的窗口中选择jar文件选项,该窗口将在窗口的java选项中。

3-单击 JarFile 选项后,将弹​​出一个新窗口。

4-选择您的 jar 文件的导出目标,然后单击下一步。

5-单击下一个您将看到的新屏幕后,再次单击下一步按钮。

6-现在您将看到一个新屏幕,其字段名称为“Main Class”,浏览您的主类 appliaction.main 类曾经具有 main 方法。

7-现在选择完成。

于 2010-04-27T12:28:02.100 回答
0

我有一个类似的问题,你的问题可能相关,也可能不相关......

Jar 清单文件必须为 UTF-8 格式。我用过windows记事本,但没有用。当我用另一个编辑器重新创建清单文件时,它工作正常。

我假设 eclipse 会创建 UTF-8 文件,但我不确定如果它们不是那种格式,它是否会自动转换

如果您确实使用另一个编辑器创建了清单的第一个版本,请尝试删除 manifest.mf 并在 eclipse 中重新创建。

约翰

于 2010-05-21T21:37:05.183 回答