簡體   English   中英

IntelliJ:源根未正確處理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM