【问题标题】:"Cannot resolve symbol" for all classes from external library in IntellijIntellij 外部库中所有类的“无法解析符号”
【发布时间】:2020-11-10 00:24:36
【问题描述】:

我有一个使用 Gradle 的 Intellij 项目。我在libs 文件夹中以JAR 文件的形式添加了一个外部依赖项,并使用以下方法将其添加到build.gradle

compile fileTree(dir: 'libs', include: '*.jar')

Intellij 将其识别为依赖项,因为它允许我浏览文件并查看其内容,并且它会建议我可以导入的包。

但是,我不能使用包含的任何类。 Intellij 说Cannot resolve symbol '[classname]'。这发生在库本身和我的项目文件中。

其他 Gradle 依赖项工作正常,例如 compile "some.group:artifact:version" 形式的那些。

我已经尝试了我在网上找到的所有修复方法,包括:

  • 缓存无效/重启
  • 删除.idea 文件

如何使用这个本地 JAR 文件作为依赖项?

【问题讨论】:

    标签: java gradle intellij-idea dependencies


    【解决方案1】:

    您附加的 jar 似乎包含 *.java 文件,而不是已编译的 *.class 文件。

    库依赖项仅适用于带有 .class 文件的 jar。找一个库jar而不是这个依赖的源jar,放到libs目录下,重新导入项目。

    【讨论】:

    • 所以 .java 文件适用于 Gradle 依赖项,但不适用于 libs 文件夹中的那些?因为我还有其他具有 .java 文件的依赖项。
    • 是的,要使 .java 依赖项工作,它们需要位于模块源根目录中,以便 IDE 在这些文件上运行 Java 编译器。您的其他模块can depend on this module。对于 jar 依赖关系,Java 需要 .class 文件,因为它不会自动编译 jar 中的 .java 文件。这在命令行和任何 IDE 中都不起作用。
    • 您能解释一下如何将 jar 添加为“模块源根目录”吗?我已经尝试了一些与此相关的不同方法,但我对 Intellij 还不够熟悉。
    • 需要将jar解压到模块源码根目录下,见jetbrains.com/help/idea/configuring-content-roots.html
    • 好的,我将 jar 作为存档解压缩到一个文件夹中,然后按照“添加新内容根目录”部分进行操作。但由于我使用的是 Gradle,它显示“Module [main module] is imported from Gradle. Any changes made in its configuration may be lost after reimporting.”当我刷新 Gradle 时,新的模块源根目录消失了。有没有办法避免这种情况?
    猜你喜欢
    • 2018-02-27
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 2018-01-16
    • 2018-02-21
    • 1970-01-01
    • 2015-02-12
    相关资源
    最近更新 更多