Maven包工作但Intellij的构建失败

时间:2013-08-19 14:53:29

标签: java maven intellij-idea

我有一个JDK 1.7项目,maven依赖于我的maven repo中的本地jar。

我无法使用Intellij构建项目,错误无法找到符号(符号是从本地jar导入包的类)

但我可以使用'mvn package'成功构建项目。

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

  • 无效缓存
  • 'mvn clean install'the local jar dependecy
  • 在Intellij的maven配置中标记为“自动加载快照”
  • 在Intellij中重新插入maven
  • Syncornized

此错误发生在我之前的几次,但通常只是关闭Intellij和/或执行'mvn clean install'就行了。

请帮忙。

28 个答案:

答案 0 :(得分:90)

我知道这已经晚了,但执行mvn idea:idea解决了这个问题。

答案 1 :(得分:24)

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

答案 2 :(得分:13)

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

当我有这个时,它在Windows和Mac上是一个不同的修复。

在Mac上,我进入了ItellijIDEA / Preferences / Build,Execution,Deployment / Build Tools / Maven / Maven主目录,并将其设置为使用我单独安装的Maven而不是捆绑的Maven。所有构建问题都消失了。

在Windows上,我看到了与SSL相关的idea.log中的异常,而我的项目树在External Libraries分支下只有Java。通过查看其他站点,听起来IntelliJ使用自己的私有JDK而不是系统JDK(即使在我的情况下,我已经安装了完全相同的JDK版本)。我的系统JDK在IntelliJ私有JDK没有的企业Nexus服务器的密钥库中安装了证书,因此在尝试从Nexus获取文件时会抛出异常。为此,解决方案是退出IntelliJ,设置一个名为IDEA_JDK的环境变量,指向已经安装了具有正确证书的JDK并重新启动IntelliJ。所有构建问题都消失了。

答案 3 :(得分:11)

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

答案 4 :(得分:5)

Maven ReImport为我工作如下...

enter image description here

答案 5 :(得分:3)

我知道我在这次谈话中已经很晚了,但只是想发布这个以防其他人遇到这个问题。发生这种情况的另一个原因是因为您没有提到正确的存储库。 Intellij默认选择jar的捆绑版本,而不是你自己的maven资源库中的版本。确认连接的存储库是正确的。

答案 6 :(得分:3)

IDE在构建时使用自己的Maven捆绑副本。如果终端上的maven与IDE不同,那么你希望它们是相同的。

GOTO(在Mac上) - IntelliJ Idea - >偏好 - >构建,执行,部署 - >构建工具 - > Maven的。设置 Maven主目录的路径 要查找从终端使用的Maven的路径,请键入命令mvn -version,这应该打印出一堆详细信息,包括dir路径。把它放在 Maven主目录

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

====其他一些可能导致此类问题的事情===

如果执行mvn package或mvn clean install build,那么它必须对IDE缓存执行某些操作。 除此之外,这个通常有助于解决这些错误 - >

文件 - >无效缓存

答案 7 :(得分:2)

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

答案 8 :(得分:1)

"无法找到符号"意味着intellij无法解决"依赖"。所以,你可以强迫"依赖性分析"点击"分析" - > "分析依赖关系"然后选择"分析范围"

答案 9 :(得分:1)

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

答案 10 :(得分:0)

此错误的另一个原因是在 pom.xml 文件中使用了依赖项,例如 lombok。如果你在java文件中使用了@Data等lombok注解,那么你需要在intellij中安装lombok插件来摆脱IDE中的“错误”。

答案 11 :(得分: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后,我的项目成功构建。我希望我有更好的方法来解决这个问题。

答案 12 :(得分:0)

在Mac中,我通过从计算机中删除Intellij Idea Appication并删除其中的缓存文件来解决此问题 〜/图书馆/应用程序支持/JetBrains/IntelliJIdea2020.1 〜/ Library / Caches / JetBrains / IntelliJIdea2020.1

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

答案 13 :(得分:0)

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

答案 14 :(得分:0)

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

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

答案 15 :(得分:0)

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

答案 16 :(得分:0)

我也遇到了同样的问题。 从终端使用 maven 命令 (mvn clean install -DskipTests=true) 项目已成功构建。但是在intellij中无法识别jar spring库文件。

使用以下步骤修复它:

  1. 关闭你的 IDE(intellij)
  2. 删除 sudo "rm -rf //.idea/" (/home/user/projects/test_proj/.idea/)
  3. 再次打开您的 IDE。它将重新索引您的文件,问题将得到解决

RCA:我怀疑这是由于 linux 中的权限问题造成的

答案 17 :(得分:0)

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

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

答案 18 :(得分: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>

请记住用您自己的rt.jar路径替换cootclasspath

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

答案 19 :(得分:0)

删除.idea文件夹并关闭IDE

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

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

答案 20 :(得分:0)

我有同样的问题。 转到:

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

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

答案 21 :(得分:0)

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

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

答案 22 :(得分:0)

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

gradle cleanIdea idea

答案 23 :(得分:0)

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

我转到C:\ Users \ .IntellijJIdea2018.2,然后删除了整个文件夹。

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

答案 24 :(得分:0)

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

答案 25 :(得分:0)

我尝试使缓存无效,将Maven更改为已安装的版本,但无济于事。

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

答案 26 :(得分:0)

这里的其他答案中的许多有价值的提示,只是想添加为我的问题工作的解决方案。

我们最近开始使用私有Maven存储库,并在调用Maven cmdline时始终执行mvn -s settings.xml。 IntelliJ当然不知道私人回购,所以需要一些帮助。

转到设置 - &gt;构建,执行,部署 - &gt;构建工具 - &gt; Maven并覆盖&#34;用户设置文件&#34;选项。

enter image description here

答案 27 :(得分:0)

我遇到了同样的问题。我在Idea设置中将maven版本从3.0.5更改为3.0.4,现在一切正常。不知道为什么这会对我有所帮助。