正在运行的jar文件返回错误:错误:无法找到或加载主类MyClass原因: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文件时,出现:

enter image description here

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

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

解决方法

程序包名称是类名称的部分server.Server不是Server。我认为您想要前者,而不是后者。更改

Main-Class: Server

Main-Class: server.Server
,

您已经说过Server.class不属于任何软件包,如果是,则Server.class不应位于jar文件中的服务器文件夹下。如果要将服务器文件夹视为项目结构中的“ src”文件夹,请使用“ -C”选项,例如:

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

对于服务器/消息下的所有其他类文件,您应该执行类似操作。

,

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

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...