Maven包有效,但Intellij的构建失败


91

我有一个JDK 1.7项目,该项目具有对Maven回购中的本地jar的maven依赖关系。

我无法使用Intellij来构建项目,并出现以下错误:找不到符号(符号是从本地jar导入包的类)

但是我可以使用“ mvn软件包”成功构建项目。

我已经花了很多时间寻找解决方案,而我已经做过的事情:

  • 无效的缓存
  • 'mvn clean install'本地jar依赖
  • 在Intellij的Maven配置中标记为“自动加载快照”
  • Intellij中重新植入的Maven
  • 异化

这个错误以前发生过两次,但通常只是关闭Intellij和/或执行“ mvn clean install”即可。

请帮忙。


1
您的Maven存储库是否已使用IntelliJ正确配置?
Ruchira Gayan Ranaweera

是的,存储库的路径是我使用“ mvn install”时更新的路径
Yarin Miran 2013年

3
本地jar是jar的快照还是发行版?如果jar是快照,则必须在intellij Maven设置中选中“始终更新快照”以强制对ide进行更新。
F. Geraerts

是的,它是快照,我已经标记了该选项。但仍然没有任何变化:(
Yarin Miran

1
在“设置”的“编译器”部分中,是否选中了“使用外部版本”?并且在“使用外部构建”中,还选中了“在依赖项更改时重建模块”选项?
F. Geraerts 2013年

Answers:


154

我知道这很晚了,但是执行mvn idea:idea可以解决问题。


3
这应该是公认的答案,因为它提供了实际的解决方案,而不仅仅是失败的原因。我所有的updoots!
沃克斯特

4
mvn idea:idea尚未更新,也未由jetbrains维护
Sean

2
之后,我必须重新运行mvn install
Fabio F.

1
之后,只需重建项目即可。谢谢。

2
你使我免于绝望。我想亲吻你
Martin Bamford

28

尝试删除所有.iml和您的POM。然后将您的POM再次复制并粘贴到您的项目中,然后重新打开并重新导入它。


13
也许只是尝试在Maven项目视图中“全部重新导入”,然后再删除任何内容
Zveratko 2015年

2
我也不得不删除.iml,重新导入Maven并没有解决它。
Daniel de Zwaan

1
@masoodg,非常感谢!你救了我的一天!只是重新导入没有帮助。按照您的指示进行操作,它就像一种魅力。
tabalin

关闭的IntelliJ,删除*.iml*.ipr以及*.iws从项目根目录下的文件,然后重新打开的IntelliJ固定对我来说
theferrit32

16

我发现我的.iml文件和pom发生冲突并导致了问题。


1
我有类似的问题。我已使用构建日期插件进行了配置。此插件需要buildDate属性,其值为“ $ {maven.build.timestamp}”。IntelliJ在解析此pom时遇到问题,并且iml文件未与pom正确同步。当我评论属性buildDate同步工作正常。
chalimartines

9
有关如何解决此问题的任何提示?我只想让Intellij工作,看来Netbeans不管​​做什么都可以运行任何项目...这是一个完整的生产力破坏者:( ...
Breno Salgado

1
我不知道您的修补程序是否相同,但是我不得不退出并重新加载项目以强制IntelliJ更新它的IML文件(因为我添加了一些新的依赖项,因此没有从pom.xml中刷新它)
SonarJetLens

1
“如何”比“为什么”要有用得多。请添加一些有关如何解决此问题的详细信息。
若昂·马托斯

2
我关闭了IntelliJ。然后,我删除了C:\Users\USERNAME\.IntelliJIdea2017.2\system。之后,我git clean -xdf在源目录中执行了一个操作,以删除所有非版本化文件,然后再次导入该项目。现在就像魅力一样。
koppor

15

添加更多提示,因为这是我遇到类似问题(项目构建在mvn而不是IntelliJ中)时出现在搜索中的第一件事,以防它可能对其他人有所帮助。

当我遇到这个问题时,它是Windows和Mac上的另一种修复程序。

在Mac上,我进入ItellijIDEA /首选项/构建,执行,部署/构建工具/ Maven / Maven主目录,并将其设置为使用单独安装的Maven,而不是捆绑的Maven。所有的构建问题都消失了。

在Windows上,我在idea.log中看到了与SSL有关的异常,并且我的项目树在“外部库”分支下只有Java。从其他站点看,这听起来像IntelliJ使用了自己的私有JDK而不是系统JDK(即使就我而言,我已经安装了完全相同的JDK版本)。我的系统JDK在公司Nexus服务器的密钥库中安装了证书,而IntelliJ私有JDK则没有,因此在尝试从Nexus获取文件时抛出了异常。为此,解决方案是退出IntelliJ,设置一个名为IDEA_JDK的环境变量,以指向我已经安装的具有适当证书的JDK,然后重新启动IntelliJ。所有的构建问题都消失了。


在具有最新IntelliJ 2016.3.5的Linux上存在相同的问题-首先它可以工作,然后在某些POM更改后获得了同步,并且仅切换了Maven隐含帮助,所以也可能是仅切换Maven会触发IntelliJ中的更新,从而导致该项目将再次同步...
Gregor


5

IDE在进行构建时会使用其自己的Maven捆绑副本。如果终端上的maven与IDE不同,则希望它们相同。

转到(在Mac上)-IntelliJ Idea->首选项->构建,执行,部署->构建工具-> Maven。设置Maven主目录 的路径要在终端上找到要使用的Maven的路径,请键入command mvn -version,它应该会打印出许多细节,包括dir路径。把它放在Maven主目录中

为了安全起见,您也可以对JDK位置执行相同的操作

====其他可能导致此类问题的事物===

如果执行mvn软件包或mvn全新安装,则它必须对IDE缓存执行某些操作。除其他事项外,此错误通常有助于解决此类错误->

文件->使缓存无效


4

我知道这次对话很晚,但只是想发布此内容,以防其他人遇到此问题。发生这种情况的另一个原因是,您没有引用正确的存储库。Intellij默认情况下会选择捆绑的jar版本,而不是从您自己的maven存储库中获取。确认连接的存储库是正确的存储库。


如果您使用自制软件安装了maven,则正确设置maven主目录(例如)/usr/local/Cellar/maven/3.5.4/libexec即可解决此问题
sushilshimpi,

3

在我的情况下,我的iml不同步,因此我删除了特定模块的iml,然后在maven选项下选择unignore project重新创建iml


3

从命令提示符处执行commnad:mvn idea:idea并右键单击项目->从菜单中重新导入依赖项


1

“找不到符号”表示intellij无法解决“依赖性”。因此,您可以通过单击“分析”->“分析依赖性”来强制“依赖性分析”,然后选择“分析范围”


1

在这里其他答案中,许多有价值的技巧只是想添加适用于我的问题的解决方案。

我们最近开始使用私有Maven存储库,并且始终会 mvn -s settings.xml在调用Maven cmdline时。IntelliJ当然不知道私有仓库,因此需要一些帮助。

转到设置->构建,执行,部署->构建工具-> Maven,并覆盖“用户设置文件”选项。

在此处输入图片说明


1

我有同样的问题。去:

文件->项目结构->模块。选择您的模块,然后在“ Dependencies ”选项卡下,确保已添加所有Maven依赖项。

为了确保您在构思编辑器中收到类似问题的警告,请执行以下操作:从“依赖关系选项卡”切换到“源”,并添加将您的src标记为源。



0

我尝试使缓存无效,将Maven更改为已安装的版本,但没有任何效果。

关闭并重新创建一个新项目即可解决该问题。


0

我关闭了该项目,然后通过单击root pom(不仅是文件夹,而且是pom文件本身)再次导入了该项目。


0

我没有高兴地尝试了以上所有内容。但是我做了一件事最终使它起作用:

我去了C:\ Users \ .IntellijJIdea2018.2,只是删除了整个文件夹。

它删除了IntelliJ的所有设置和缓存。我不得不从头开始重新导入我的项目,但是之前没有进行过简单的删除和重新导入的操作,但这终于使它再次起作用。


0

如果您正在使用gradle,请尝试以下命令。这解决了我的问题

gradle cleanIdea idea


0

这个简单的过程大约需要1分钟,没有任何风险。

  • 关闭IntelliJ
  • 删除IntelliJ特定文件,例如.idea / *,*。iml,.settings等。建议也删除POM,但这不是必需的恕我直言。
  • 然后使用以下命令在IntelliJ中重新创建项目:文件>新建>来自现有源的项目>遵循步骤。注意不要导入多个配置文件或(相同的项目)。

0

删除.idea文件夹并关闭IDE

再次打开IDE并导入将进行全新导入的项目,因为.IDEA文件夹之前已被我们删除

检查外部库模块,如果未填充所需的依赖项,则检查在IDE中是否正确给出了maven settings.xml位置


0

也有未提及的可能性。如果您从导入库com.sun.*。这也会导致此问题。

程序在ide中运行时起作用,因为这些类com.sun.*都在jre/lib目录中,因此在运行时将被加载。但是当您运行时mvn package,由于自Java 1.6以来oracle的限制,将无法访问这些库(这些库已在某种程度上被弃用)。要解决此问题,您可以添加

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <verbose />
                        <bootclasspath>C:/Program Files/Java/jdk1.8.0_161/jre/lib/rt.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>

记得用自己的路径替换cootclasspath rt.jar

您可以搜索Access restriction: The type XXX is not accessible due to restriction on required library更多详细信息。


0

如果配置了错误的模块,请执行以下步骤:

  • 转到项目设置
  • 转到模块
  • 删除不应该存在的模块

0
  1. 在Maven选项卡中,单击+,然后选择pom.xml。
  2. 在Maven选项卡中,单击下载源和文档
  3. 在项目结构(您可以在其中查看项目文件/目录)上,右键单击要构建的项目,然后选择“构建模块项目名称”。
  4. 从选项卡运行-使用+添加配置并添加应用程序,然后填写以下字段:主要类别-从“项目”选项卡中手动选择,选择主要类别ii。使用模块的类路径-选择应用程序名称iii。缩短命令行-类路径文件
  5. 现在,只需运行该应用程序。

0

就我而言,问题出在不同的Project Java SDK版本中。当我从终端构建项目时,maven使用Java 8,而当我从IDEA构建时,它使用Java 11。

转到文件>项目结构...,然后在项目设置中将Project SDK设置为所需的版本。


0

对我来说,问题是我在IntelliJ Java Compiler设置中选择了Ajc编译。一旦将其更改回Javac,一切工作正常。


0

在Mac中,我通过从计算机中删除Intellij Idea Appication并在〜/ Library / Application Support / JetBrains / IntelliJIdea2020.1〜/ Library / Caches / JetBrains / IntelliJIdea2020.1中删除缓存文件来解决该问题

然后重新安装它,打开我的项目,并成功构建它!


0

我遇到了同样的问题。我可以mvn clean package在终端中成功运行命令,但无法从IntellJ运行或构建。我做了以下动作,但都失败了。

  • 无效的缓存
  • 运行mvn clean packagemvn clean package在终端
  • 在Intellij的Maven配置中标记为“自动加载快照”
  • 合成或重新导入
  • 删除所有与.idea等IntellJ相关的文件,然后重新导入项目
  • 删除所有依赖文件,然后运行 mvn clean package
  • 切换Java版本或在IntellJ中使用嵌入式Java
  • mvn idea:idea
  • 更改Maven主页
  • 在模块选项卡中将src目录标记为源

我所做的最后一件事:删除项目中的.idea和.iml,删除所有依赖项文件,然后从计算机中删除IntellJ。重新安装IntellJ后,我的项目成功构建。我希望我能有一个更好的方法来解决这个问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.