IntelliJ:源根未正确处理

时间:2017-05-10 17:45:53

标签: java intellij-idea

我有以下项目结构:

ModuleName (=Content Root)
  |---src
  |    |---com
  |         |---company
  |             |---file1.java
  |             |---file2.java
  |---test-src
  |    |---com
  |         |---company
  |             |---test.java
  |--- .classpath
  |--- .project

最初这是一个Eclipse项目,我需要在IntelliJ中导入它。

但是,每当我尝试导入它时,IntelliJ都会与源根文件夹完全混淆。

查看java源文件,我在包声明中收到以下错误:

package com.company;
  

错误:包名'com.company'与文件路径'src / com.company'不对应

  

错误:包名'com.company'与文件路径'test-src / com.company'不对应

我正确地将'src'和'test-src'文件夹标记为IntelliJ中的源根。但是,它始终认为这些文件夹是包层次结构的一部分。

我在大约30个不同模块中的3个中遇到此问题。所有模块的结构都是相同的,我没有看到任何理由为什么IntelliJ适用于大多数模块,但对于这三个模块都失败了。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

为了完整性'为什么 - 如果有人遇到类似设置的同一问题,这就是解决方案:

另一个模块(让我们称之为模块B)依赖于模块A生成的.jar文件。这通常可以很好地工作,并且可以在模块B中找到所需的.jar。 lib文件夹。问题是模块B的.classpath文件(用于将模块导入IntelliJ)包含以下条目(我假设它是在早些时候由eclipse生成的):

<classpathentry kind="lib" path="lib/ModuleA.jar" sourcepath="/ModuleA/" />

现在,似乎IntelliJ对此源路径条目非常困惑(因为它没有指向有效位置),这不知何故影响了模块A的打包结构。 这有什么有意义的(并且调试并找到实际问题是一个巨大的痛苦)是错误在模块B中没有表现出来,其中存在有问题的.classpath文件(因为IntelliJ没有#&# 39; t显示从.classpath文件导入的源无效的警告),而是在父模块A中。

删除源路径条目(或将其指向有效位置,即:lib / ModuleA.jar)修复了问题。