我有以下项目结构:
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适用于大多数模块,但对于这三个模块都失败了。
我该如何解决这个问题?
答案 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)修复了问题。