gpt4 book ai didi

java - 如何使用此 makefile 和 src/和 bin/中的文件正确制作 java jar 文件

转载 作者:行者123 更新时间:2023-12-04 06:38:55 25 4
gpt4 key购买 nike

我无法为我的 Java 实现正确生成 Jar。我不是 Java 大师(因此我使用 Make 而不是 Ant)。我不认为我关心 Jar,直到我意识到我的 Windows 机器没有 javac。然后我心想“要是我有一个 jar 就好了”

所以我在 Makefile 中尝试了几行

相关线路是

all: client server jar

client: bin bin/Job.class bin/JobQueue.class bin/Client.class bin/FileTransfer.class

server: bin bin/Job.class bin/JobQueue.class bin/Server.class bin/ServerThread.class bin/FileTransfer.class

jar: client server
jar cfe HBNQServer Server bin/Server.class bin/Job.class bin/JobQueue.class bin/ServerThread.class bin/FileTransfer.class
jar cfe HBNQClient Client bin/Client.class bin/Job.class bin/JobQueue.class bin/FileTransfer.class

但是,当我尝试运行它时,我得到一个 No Class Found Exception。
$ java -jar HBNQServer
Exception in thread "main" java.lang.NoClassDefFoundError: Server
Caused by: java.lang.ClassNotFoundException: Server
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

我相信这个错误对于更熟悉“Jaring”文件的人来说是显而易见的。

如果我遗漏了任何重要的代码,可能会发现 Here

最佳答案

我相信你的问题是 bin字首。如果您 jar 一个类文件,它必须位于与其完全限定的包名称相同的目录中。例如,如果您实现了 com.mycompany.Server类,jar文件中对应的路径必须是com/mycompany/Server.class .在您的情况下,一切都在 bin 中jar 文件中的目录,因此它找不到您的(大概是未包限定的)类。要么将您所有的类(class)都放在 bin 中打包,或者在没有 bin 的情况下将它们打包字首。

像这样的事情可能会奏效:

jar: client server
cd bin; jar cfe ../HBNQServer Server Server.class Job.class JobQueue.class ServerThread.class FileTransfer.class
cd bin; jar cfe ../HBNQClient Client Client.class Job.class JobQueue.class FileTransfer.class

关于java - 如何使用此 makefile 和 src/和 bin/中的文件正确制作 java jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4515536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com