无法理解java项目/ IntelliJ中外部库的使用

时间:2013-01-23 23:21:27

标签: java module intellij-idea classpath libraries

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

方案: 我在IntelliJ Idea中有一个Java项目,其最终目标是创建一个能够在Windows或Linux上运行的独立.jar,可以使用java -jar jarname.jar从命令行运行,也可以只需双击任何正常的,简单的罐子。

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

如何配置IntelliJ以构建.jar工件并在其中包含必要的资源,并将所需的所有内容放在适当的位置,以便 my class可以通过普通的import语句来使用资源吗?以示例形式给出的答案将是令人敬畏的;我几乎已经弄明白了,但是我必须做的一件事我没做错。

感谢您的时间,

杨克

  

来源:

     

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

     

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

     

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

3 个答案:

答案 0 :(得分:4)

一个人不会简单地将Mordor打包到他们的罐子里。

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

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

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

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

    注意:不要被“导出”复选框所迷惑。它的唯一目的是造成无尽的痛苦和痛苦,因为你想知道为什么依赖不会随着你的罐子一起出口。永远记住,导出框试图让你点击它。它想要被勾选:3

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

阅读How classes are found...

可以(希望你)将程序运送到自己​​的jar中,并将相关的“库”作为单独的jar发送

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

罗尔夫