【问题标题】:Correct way to add external jars (lib/*.jar) to an IntelliJ IDEA project将外部 jar (lib/*.jar) 添加到 IntelliJ IDEA 项目的正确方法
【发布时间】:2023-01-02 18:38:08
【问题描述】:

在 IntelliJ IDEA 中新建 Java 项目时,会创建如下目录和文件:

./projectname.iml
./projectname.ipr
./projectname.iws
./src/

我想配置 IntelliJ IDEA 以将我在 ./lib/*.jar 中的依赖 JAR 包含到项目中。在 IntelliJ IDEA 中实现此目的的正确方法是什么?

【问题讨论】:

  • 我在 IntelliJ 的终端中运行程序时遇到了这个问题。我已经使用 import 语句来使用我在程序中需要的类。当我在 IDE 中运行它时,它运行良好。但是当我尝试从命令行 % javac MyProgram.java 编译时,它说错误:找不到符号
  • @don_Gunner94 您需要了解类路径是如何工作的,并且您可能需要提供比您预期更多的东西。
  • 我建议不要使用您尝试使用的方法。最好将 JAR 上传到任何工件平台,例如 jFrog,然后像从 maven 或 gradle 那样从这样的平台获取工件。我建议您遵循“12 要素原则”作为“依赖项(明确声明并隔离依赖项)”

标签: java intellij-idea


【解决方案1】:

添加外部罐子的步骤IntelliJ IDEA:

  1. 点击文件从工具栏
  2. 选择项目结构选项 (CTRL键+转移+备选方案+小号在 Windows/Linux 上,+;在 Mac OS X 上)
  3. 选择模块在左侧面板
  4. 选择依赖关系标签
  5. 选择+图标
  6. 选择1 个 JAR 或目录选项

【讨论】:

  • 另外,考虑添加一个 lib 文件夹,并使用“附加 Jar 目录”,这将添加 lib 文件夹中的所有 jar。对于大型项目,这使您不必单独选择每个罐子。
  • 供将来参考:“添加”按钮位于窗口的右边缘,在找到这篇文章并考虑调整窗口大小之前,我花了过多的时间寻找它。 (这是在 OSX 10.6.5 上...)
  • @joeslice 仅当 JAR 位于目录根目录中时才有效,对吗?它似乎不适用于“lib”内子目录内的 JAR。
  • 在IJIdea 13中,有“+”>而不是“add”。
  • 我正在使用 IDEA 14.0.2。而不是 Add 有 + 符号。单击 + 后有 3 个选项:1. JAR 或目录 2. Library... 3. Module Dependency...
【解决方案2】:

IntelliJ IDEA 15 和 2016

  1. 文件>项目结构...

    或按控制键+Alt+转移+小号

  2. 项目设置>模块>依赖关系> "+" 标志 >JAR 或目录...

  3. 选择 jar 文件并单击确定,然后单击另一个确定按钮进行确认

  4. 可以在“External Libraries”文件夹中查看jar文件

【讨论】:

  • 我实际上在“模块”窗格中创建了一个新模块(例如命名为“JarsForLogging”),然后将我需要的所有罐子(位于远离项目树的某个目录中)添加到这个新模块并将罐子标记为“出口”。最后,我将新创建的模块添加到原始模块的依赖项中。这样更有层次感。
  • 此外:确保文件系统权限已为 .jar 文件正确设置。在 Linux 或 MacOS 上使用 chmod 修改它们。
  • 在 2018 年(年份和 IntelliJ 版本)仍然有效。谢谢你。这样我就可以从 IntelliJ 中加载和使用 Armed Bear Common Lisp 库,太棒了!
  • 是的。也适用于我的 IntelliJ。谢谢!
  • @don_Gunner94,通过命令行,您还应该像这样提供 jar:javac -cp ".:/my/path/file.jar;" MyProgram.java
【解决方案3】:

只需将 .jar 复制粘贴到“libs”文件夹(或整个“libs”文件夹)下,右键单击它并从列表中选择“添加为库”选项。它会做剩下的......

【讨论】:

  • 自 Eclipse 时代以来最简单的方式也是我们惯用的方式。
  • 干净利落!!
  • 有点烦人,它仍然要求一个“名字”,你能把任何垃圾放在那里吗?
  • 这对我也有帮助!
  • 我在 IntelliJ 的终端中运行程序时遇到了这个问题。我已经使用 import 语句来使用我在程序中需要的类。当我在 IDE 中运行它时,它运行良好。但是当我尝试从命令行编译 % javac MyProgram.java 时,它说错误:找不到符号。 –
【解决方案4】:

如果你使用 gradle 构建你的项目,你只需要在 build.gradle 中的依赖项中添加一行:

buildscript {
    ...
}
...

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}

然后将该文件夹添加到您的根项目或模块:

然后你把你的罐子放在那里,你就可以走了:-)

【讨论】:

  • 我在 IntelliJ 的终端中运行程序时遇到了这个问题。我已经使用 import 语句来使用我在程序中需要的类。当我在 IDE 中运行它时,它运行良好。但是当我尝试从命令行编译 % javac MyProgram.java 时,它说错误:找不到符号。 –
  • 这应该是正确的答案,因为它可以让您推送和同步所需的库,而无需从拉取项目的库中进行任何配置。设置一次就忘记了。
  • 哇,我简直不敢相信找到这一行花了多长时间!甚至 Gradle 上的教程也没有这个。我花了一周的时间来完成这项工作(在我仅有的一点空闲时间和精力中)哈哈。我通常不创建库,很久以前我就这样做过。
【解决方案5】:

您将它们作为库添加到您的模块中。

我的源代码中通常有一个 /lib 目录。我把我需要的所有 JAR 放在那里,添加 /lib 作为库,并使其成为我的模块依赖项的一部分。

2018 年更新:我现在使用的是 IntelliJ 2017/2018。

我完全致力于 Maven 和 Nexus 的依赖管理。

这就是世界已经过去的方式。我所知道的每个开源 Java 项目都使用 Maven 或 Gradle。你也应该。

【讨论】:

  • 是的,但是如果 Maven pom 不叫 pom.xml 怎么办?然后似乎我无法读取 Maven 依赖项。
  • 约定是将其称为 pom.xml。按照约定重命名您的文件。
  • 当 jar 没有 maven repo 时,我仍然发现需要......但是,我不明白如何正确地做到这一点。我知道如何添加一个目录,我只是不明白如何得到它也导入 javadocs。当我将 jar 作为单个文件添加时它有效,但如果我添加目录则无效。这根本不可能吗?
  • 这是中肯的建议。手动添加 jar 非常耗时且容易出错。您的依赖项应始终“通过代码”配置,在 pom.xml(对于 maven)或 gradle 的任何等效项中。
  • 所有 JAR 都有一个回购协议。如果它在公共或私人仓库中不可用,您可以 mvn 在本地 .m2 中手动安装它。没有理由不这样做。
【解决方案6】:

我使用这种方法并且效果很好:

1- 将.jar 文件复制并粘贴到libs 文件夹下。

2- 将compile fileTree(dir: 'libs', include: '*.jar') 添加到build.gradle 中的dependencies,然后libs 文件夹中的所有jar 都将包含在内。

3- 右键单击​​libs 文件夹并从列表中选择“添加为库”选项。

【讨论】:

  • 谢谢,这是唯一对我有用的东西!
  • 我在 IntelliJ 的终端中运行程序时遇到了这个问题。我已经使用 import 语句来使用我在程序中需要的类。当我在 IDE 中运行它时,它运行良好。但是当我尝试从命令行编译 % javac MyProgram.java 时,它说错误:找不到符号。
【解决方案7】:

如果库没有正确添加到项目 gradle 文件中,则不能直接在任何程序中使用。

这可以在像 intelliJ 这样的智能 IDE 中轻松完成。

1) 首先作为惯例在您的项目 src 文件下添加一个名为“libs”的文件夹。 (这可以使用 IDE 本身轻松完成)

2)然后将您的库文件(例如:.jar 文件)复制或添加到名为“libs”的文件夹中

3)现在你可以在libs文件夹中看到库文件了。现在右键单击该文件并选择“添加为库”。这将修复您程序中的所有相关文件,并且库将直接可供您使用。

请注意:

每当您向项目添加库时,请确保该项目支持该库

【讨论】:

    【解决方案8】:

    在这里找到了一些很好的帮助。但是,尽管正确加载了 JAR,我仍然无法让它工作。后来我发现我不小心在文件结构中创建了模块而不是常规文件夹,并且在项目设置中预先选择了这个模块。

    这是足迹:

    文件 -> 项目结构 -> 模块 -> (如果你有更多模块,请选择合适的模块) -> 依赖项 -> + -> JAR 或库

    【讨论】:

      【解决方案9】:

      虽然我同意前面的答案,但重要的是要注意如何访问这些外部库的代码。

      例如,要访问外部库中的类,您需要使用进口关键字后跟外部库的名称,继续使用点符号,直到达到所需的类。

      看看下面的图片,看看我是如何导入的代码生成异常来自 quickfixj 库的类。

      【讨论】:

        【解决方案10】:
        1. 文件>项目结构
        2. 项目设置 > 模块 > 依赖关系(选择其中之一)
          • 1 个 JAR 或目录...
          • 2图书馆...
          • 3 模块依赖...
        3. 应用+确定

          1. 导入java类

        【讨论】:

          【解决方案11】:

          您可以将 JAR 放在 libs 文件夹中,然后从那里添加它。这可以在 IntelliJ 中以两种不同的方式完成:

          1. 右键单击 libs 文件夹并从那里添加:

            1. 从项目结构中添加 JAR:

          【讨论】:

            【解决方案12】:

            如果您使用 Maven 构建您的项目,您只需要在 pom.xml 中的依赖项中添加一行:

            <dependency>
                 <groupId>com.xxx</groupId>
                 <artifactId>xxxx-server</artifactId>
                 <version>1.0.0</version>
                 <scope>system</scope>
                 <systemPath>${pom.basedir}/src/libs/xxx-server-1.0.0.jar</systemPath>
            </dependency>
            

            然后将该文件夹添加到您的根项目或模块:

            这是我的亲身经历。我希望他们能帮助你

            【讨论】:

              猜你喜欢
              • 2019-07-07
              • 1970-01-01
              • 1970-01-01
              • 2011-08-27
              • 2017-07-01
              相关资源
              最近更新 更多