[英]IntelliJ: Source root is not handled correctly
我有以下項目結構:
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”不對應
我在IntelliJ中正確地將“ src”和“ test-src”文件夾標記為源根。 但是,它始終認為這些文件夾是包層次結構的一部分。
我在大約30個不同的模塊中有3個遇到了這個問題。 所有模塊的結構都相同,我幾乎看不到IntelliJ對大多數模塊起作用的任何原因,但對於這三個模塊卻無效。
我該如何解決?
為了完整起見-如果有人使用相似的設置遇到相同的問題,以下是解決方案:
另一個模塊(我們稱其為模塊B)依賴於模塊A生成的.jar文件。這通常工作得很好,可以在模塊B的lib文件夾中找到所需的.jar。 問題在於模塊B的.classpath文件(用於將模塊導入IntelliJ中)包括以下條目(我假設它是由eclipse在較早的時候生成的):
<classpathentry kind="lib" path="lib/ModuleA.jar" sourcepath="/ModuleA/" />
現在,似乎IntelliJ對此源路徑條目(因為它未指向有效位置)感到極為困惑,並且以某種方式影響了模塊A的包裝結構。 有趣的是(該錯誤使調試和發現實際問題變得很痛苦)是該錯誤並未在有問題的.classpath文件所在的模塊B中顯示出來(因為IntelliJ不會顯示警告從.classpath文件導入的源無效),而是在父模塊A中。
刪除sourcepath條目(或將其指向有效位置,即:lib / ModuleA.jar)解決了該問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.