将外部 jars (lib/*.jar) 添加到 IntelliJ IDEA 项目的正确方法
Posted
技术标签:
【中文标题】将外部 jars (lib/*.jar) 添加到 IntelliJ IDEA 项目的正确方法【英文标题】:Correct way to add external jars (lib/*.jar) to an IntelliJ IDEA project 【发布时间】:2010-11-06 07:16:12 【问题描述】:在 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 您需要了解类路径的工作原理,并且您可能需要提供比您预期更多的内容。 【参考方案1】:-
文件 > 项目结构
项目设置 > 模块 > 依赖项(选择其中一项)
1 JAR 或目录...
2 库...
3 模块依赖...
申请 + 确定
-
导入java类
【讨论】:
【参考方案2】:在IntelliJ IDEA中添加外部jar的步骤:
-
点击工具栏中的文件
选择项目结构选项(CTRL + SHIFT + ALT + S在 Windows/Linux 上,⌘ + ; 在 Mac OS X 上)
在左侧面板中选择模块
选择依赖项选项卡
选择+图标
选择1个JAR或目录选项
【讨论】:
另外,考虑添加一个 lib 文件夹,并使用“附加 Jar 目录”,这将添加 lib 文件夹中的所有 jar。对于大型项目,这使您不必单独选择每个 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...【参考方案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 作为单个文件添加时有效,但如果我添加目录则无效。这根本不可能吗? 这是合理的建议。手动添加 jars 既费时又容易出错。您的依赖项应始终“通过代码”配置,在pom.xml
(对于 maven)或 gradle 的任何等效项中。
所有 JAR 都有一个 repo。如果它在公共或私人仓库中不可用,您可以在本地 .m2 中手动安装它。没有理由不这样做。【参考方案6】:
我用这个方法,效果很好:
1- 将.jar
文件复制并粘贴到libs
文件夹下。
2- 在build.gradle
中将compile fileTree(dir: 'libs', include: '*.jar')
添加到dependencies
,然后将包含libs
文件夹中的所有jar。..
3- 右键单击libs
文件夹并从列表中选择“添加为库”选项。
【讨论】:
谢谢,这是唯一对我有用的东西! 我在 IntelliJ 的终端中运行程序时遇到了这个问题。我已经使用 import 语句来使用程序中需要的类。当我在 IDE 中运行它时,它运行良好。但是当我尝试从命令行 % javac MyProgram.java 编译时,它说错误:找不到符号。【参考方案7】:虽然我同意前面的答案,但重要的是要注意如何访问这些外部库的代码。
例如,要访问外部库中的类,您将需要使用 import 关键字,后跟外部库的名称,并继续使用点符号直到需要上课了。
查看下图,了解我是如何从 quickfixj 库中导入 CodeGenerationException 类的。
【讨论】:
【参考方案8】:IntelliJ IDEA 15 和 2016
文件 > 项目结构...
或按 Ctrl + Alt + Shift + S
项目设置 > 模块 > 依赖项 > “+”符号 > JAR 或目录。 ..
选择jar文件并点击OK,然后点击另一个OK按钮确认
可以在“External Libraries”文件夹中查看jar文件
【讨论】:
我实际上在“模块”窗格中创建了一个新模块(例如命名为“JarsForLogging”),然后将我需要的所有 jars(位于远离项目树的某个目录中)添加到这个新模块并将罐子标记为“导出”。最后,我将新创建的 Module 添加到原始 Module 的依赖项中。这样更有层次感。 另外:确保为.jar
文件正确设置了文件系统权限。在 Linux 或 MacOS 上使用 chmod
修改它们。
在 2018 年(年份和 IntelliJ 版本)中仍然有效。谢谢你。这样我就可以从 IntelliJ 中加载和使用 Armed Bear Common Lisp 库,太棒了!
是的。也适用于我的 IntelliJ。谢谢!
@don_Gunner94,通过命令行,您还应该提供这样的 jar:javac -cp ".:/my/path/file.jar;" MyProgram.java
【参考方案9】:
在这里找到了一些很好的帮助。但是,尽管正确加载了 JAR,我仍然无法使其工作。后来我发现我不小心在文件结构而不是常规文件夹中创建了模块,并且这个模块是在项目设置中预先选择的。
这是脚印:
文件 -> 项目结构 -> 模块 ->(如果有更多,请选择适当的模块)-> 依赖项 -> + -> JAR 或库
【讨论】:
【参考方案10】:如果未正确添加到项目 gradle 文件中,则无法在任何程序中直接使用库。
这可以在 inteli J 等智能 IDE 中轻松完成。
1) 首先作为约定,在您的项目 src 文件下添加一个文件夹名称“libs”。 (这可以使用 IDE 本身轻松完成)
2) 然后将您的库文件(例如:.jar 文件)复制或添加到名为“libs”的文件夹中
3) 现在您可以在 libs 文件夹中看到库文件。现在右键单击文件并选择“添加为库”。这将修复程序中的所有相关文件,并且库将直接供您使用。
请注意:
每当您向项目添加库时,请确保项目支持该库
【讨论】:
以上是关于将外部 jars (lib/*.jar) 添加到 IntelliJ IDEA 项目的正确方法的主要内容,如果未能解决你的问题,请参考以下文章
MyEclipse中怎么让jar包自动导入到WEB-INF/lib下,而不是以外部导入的方式导入项目中
添加外部Jar时Hadoop NoClassDefFoundError