1

我是 Java(和 Eclipse)的新手,但我已经大量使用了 .NET(和 Visual Studio)。我也知道编译 C/C++ 代码和类似的东西。我知道最后我会得到一个可以从命令行运行的 EXE 或一个不错的二进制文件。

我一直在制作一个使用一些外部库的 Java 实用程序。我需要把它编译成一个可执行文件,我可以在 unix 机器上从命令行运行,但我找不到任何方法来做到这一点。

我可以在 Eclipse 中构建和运行/调试,但这对我来说没有用,因为这段代码将在网络服务器上运行。我只需要将所有依赖项编译到一个文件中,但在 Google 上搜索数小时后,我能找到的最好的东西是 Eclipse 的 Fat-JAR 插件,使用该插件后,当我尝试运行文件时出现以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: Network/jar

这真的让我很困惑,因为能够做到这一点非常重要,所以我确信我一定错过了一些非常明显的东西,但正如我所说,经过数小时的搜索,我一无所获。

我真的很感激你能给我的任何帮助。谢谢。

4

4 回答 4

0

你正在做一些标准的事情,你正在使用 eclipse。这意味着,就您而言,Maven 是您的朋友。下载并安装M2Eclipse 插件。Maven 最擅长管理依赖项。因此,创建一个包含依赖项的 jar 将非常非常简单。网络和 StackOverflow 中有数千个示例。如果您在设置时遇到问题,请对此发表评论,我可以为您指明正确的方向。

于 2010-04-10T18:57:14.057 回答
0

听起来您需要修改服务器上的类路径以获取包含 Network 类的 jar 文件。你是如何执行你的程序的?您在 -cp 选项中放置了什么路径?

如果您不确定如何找出 jar 文件中的内容,请运行 jar tf ,这将列出打包的类。验证您的 CLASSPATH 中的一个 jar 是否具有它说缺少的那个类。

给我们更多细节,我们可以帮助解决它。

于 2010-04-10T19:06:15.103 回答
0

如果您使用Maven构建您的 java 应用程序(可以使用每个主要 IDE 完成),那么您可以使用 maven Shade Plugin构建一个着色的 jar 文件;这是一个包含所有依赖项的 jar 文件。

可以从命令行运行带阴影的 jar,如下所示:

java -jar myjar.jar command line options
于 2010-04-10T19:06:52.120 回答
0

我想我应该先解释一些基础知识。如果 Java 类具有方法,则它可以作为应用程序运行public static void main(String[] args)。如果它有这个方法,你可以从命令行运行它:

java my.package.MyClass <attributes>

在启动您的应用程序之前,您需要确保所有必需的 .jar 文件(以及您自己的类文件夹的根目录,如果您没有从类中创建 jar)都在CLASSPATH环境变量中。

这些是绝对的基础。当您构建更复杂的应用程序或分发应用程序时,您可能会使用 maven 或 ant 或其他使您的生活更轻松的工具。

于 2010-04-10T19:07:57.767 回答