gpt4 book ai didi

java - 智能 : Source root is not handled correctly

转载 作者:行者123 更新时间:2023-11-30 07:54:40 26 4
gpt4 key购买 nike

我有以下项目结构:

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;

Error: Package name 'com.company' does not correspond to the file path 'src/com.company'

Error: Package name 'com.company' does not correspond to the file path 'test-src/com.company'

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

我在大约 30 个不同模块中的 3 个中遇到了这个问题。所有模块的结构都相同,我真的看不出 IntelliJ 对大多数模块有效但对这三个模块无效的任何原因。

我该如何解决?

最佳答案

为了完整起见 - 如果有人使用类似的设置遇到相同的问题,这里是解决方案:

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

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

现在 IntelliJ 似乎对这个 sourcepath 条目感到非常困惑(因为它没有指向有效位置)并且这不知何故影响了模块 A 的打包结构。有趣的是(这使得调试和发现实际问题变得非常痛苦)错误没有在有问题的 .classpath 文件所在的模块 B 中表现出来(因为 IntelliJ 没有显示警告从 .classpath 文件导入的源无效),而是在父模块 A 中。

删除 sourcepath 条目(或将其指向有效位置,即:lib/ModuleA.jar)解决了问题。

关于java - 智能 : Source root is not handled correctly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43899453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com