难以理解 java 项目/IntelliJ 中外部库的用法



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

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

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

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

谢谢你的时间,

美国佬

来源:

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

查看该源的目录结构可以提供更好的主意:

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

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

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

  1. 将您的外部库(在我的例子中是.jar)定义为模块依赖项。

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

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

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

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

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

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

阅读 如何找到类...

可以(期望您)将程序发布在您自己的 jar 中,并将依赖的"库"作为单独的 jar

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

罗尔夫

最新更新