问题描述
我想将几个.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
有人可以帮我解决这个问题吗?谢谢
更新: 我创建了服务器程序包,现在一切正常。感谢所有尝试提供帮助的人。
解决方法
程序包名称是类名称的部分。 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本身上运行)时才遇到这个问题,所以我只是提出一些建议。希望你能弄清楚!