1

现在我学到了更多,我可以问一个更直接的问题。

场景:我有一个 Java 项目IntelliJ Idea,最终目标是制作一个能够在 Windows 或 Linux 上运行的独立 .jar,可以从命令行运行,也可以java -jar jarname.jar像任何普通的简单 jar 一样通过双击运行。

我写了一些类,位于我的src/package/name目录中。但是,我的一个类需要使用外部类,即一个不在我的源目录中的类,或者不是 Java 的默认.jar's集的一部分JDK

如何进行配置IntelliJ以构建.jar工件并在其中包含必要的资源,并将所需的所有内容放在适当的位置,以便我的班级可以通过普通import语句使用资源?以示例形式给出的答案会很棒;我几乎想通了,但一定只有一件事我做得不对。

谢谢你的时间,

洋基队

资料来源:

http://tukaani.org/xz/java.html

查看该源的目录结构可以更好地了解:

http://git.tukaani.org/?p=xz-java.git;a=tree

4

3 回答 3

4

人们不会简单地将魔多打包到他们的罐子里。

经过大量实验,我找到了一个解决方案,虽然可能不是正确的方法,但绝对有效。关键是:

  1. 将您的外部库(在我的情况下为 .jar)定义为模块依赖项。

  2. 将您的外部资源添加为(IntelliJ 称之为)“提取目录”。

对于第一项,转到文件 -> 项目结构。单击左侧“项目设置”列表中的“模块”。在右侧的列表中,您将看到属于您的项目的模块列表(无论它们是什么)。不要管它,但要确保它被突出显示/选择为当前模块。您想要的是该模块的设置,它将显示在右侧的窗口中。转到“依赖项”选项卡。屏幕的最右侧将是一个绿色的小加号。单击它,选择“罐子或目录”并导航到您想要与完成的罐子一起带来的相关资源。

注意:不要被“导出”复选框所迷惑。它的唯一目的是造成无尽的痛苦和折磨,因为您想知道为什么依赖项没有与您的 jar 一起导出。永远记住,导出框试图让你点击它。它被勾选:3

接下来,通过转到文件 -> 项目结构将该资源添加为提取的目录。然后是左侧Project Settings列表中的“Artifacts”。单击顶部的绿色加号以创建一个新的“Jar”工件“来自具有依赖项的模块”。在右侧窗口的“输出布局”选项卡下,单击绿色的小加号并选择“提取目录”。再次浏览到您珍贵的罐子。

您现在应该能够成功构建一个 jar 工件,其中包含在您设计它时运行所需的所有资源。

于 2013-01-24T06:56:09.990 回答
1

这是关于将外部库配置为模块依赖项的参考部分 -链接。关于工件构造 - 可以精确指定其内容(包括依赖库内容) -链接

于 2013-01-24T07:39:05.767 回答
0

阅读如何找到课程...

可以(希望您)将您的程序放在您自己的 jar 中,并将依赖的“库”作为单独的 jar

您应该提供一种使用 java 命令的正确 -classpath 参数运行程序的方法,以便 java 可以找到您的 jar 和依赖的 jar……有多种方法可以做到这一点……请参阅链接多于。

罗尔夫

于 2013-01-24T00:12:57.107 回答