Running jar file returns error: Error: Could not find or load main class MyClass Caused by: java.lang.ClassNotFoundException: MyClass

Running jar file returns error: Error: Could not find or load main class MyClass Caused by: java.lang.ClassNotFoundException: MyClass

我有几个 .class 文件,我想将其转换为一个 .jar 文件。这是 jar 文件的清单:

MANIFEST.MF:

Main-Class: Server

这是我用来编译文件的命令:

jar cfm Server.jar META_INF/MANIFEST.MF ../server/Server.class ../server/message/User.class ../server/message/ServerNode.class ../server/message/ServerHub.class ../server/message/Chattype.class ../server/message/Chat.class

最后是我的文件夹结构:

message-platform - 
   dist -
     META-INF -
        MANIFEST.MF
   server -
     Server.class
     message -
         User.class
         ServerNode.class
         Chat.class
         ServerHub.class
         Chattype.class
         

这是我收到的错误消息:

Error: Could not find or load main class Server
Caused by: java.lang.ClassNotFoundException: Server

这是我执行 .jar 文件的方式:

java -jar Server.jar

使用 Atom 检查 jar 文件时,出现:

有人可以帮我解决这个问题吗?谢谢

更新: 我创建了服务器包,现在一切正常。感谢所有试图提供帮助的人。

包名称是 名称 class 的一部分。 server.Server 不是 Server。我想你想要前者,而不是后者。变化

Main-Class: Server

Main-Class: server.Server

不确定如何完全解决此问题,但我认为这与您的 IDE 的 class 路径配置有关。确保它使用的是标准 JDK 并且所有来源等都已正确链接。也许尝试使用 class 路径选项 -cp(尽管大多数 IDE 会为您处理)。例如:

java -cp /home/User/where/my/jar/is -jar example.jar

老实说,我只是在做一些 android 开发(在 JVM 本身上运行)时才遇到这个问题,所以我只是提出建议。希望你能弄明白!

你说过你的 Server.class 不属于任何包,如果是这样,你的 Server.class 不应该在 jar 文件中的服务器文件夹下。如果您想在项目结构中将服务器文件夹视为 'src' 文件夹,请使用“-C”选项,例如:

jar cfm Server.jar manifest.txt -C server Server.class

对于 server/message 下的所有其他 class 文件,您应该执行类似的操作。