2014-10-18 22 views
33

我想從VCS導入一個項目(當然,我是第一次這樣做),這是我的(導入的)項目結構:包名稱不對應於文件路徑 - IntelliJ

The file structure

BTW。這個屏幕是在多次嘗試改變這些目錄的屬性(在它們的上下文菜單中)之後進行的。

在這些源文件我有以下錯誤:

The error in the editor

有一次,它沒有什麼反對badugi.client但它只能在badugi.server報這個錯誤。我完全不知道它是如何工作的......

同樣的目錄中的類也不會互相看到。

Error

這是從位於ClientWorker類代碼(你可以第一個圖片中看到)在同一個目錄中Server所以應該知道什麼Server是。

我很確定這段代碼在我朋友的IDE中運行良好。我如何配置IntelliJ使其工作?

回答

33

從目錄結構來看,你有兩個包客戶端和服務器,但是代碼需要包badugi.client和badugi.server。

這裏是解決它的方式:

  1. 將光標移動到帶下劃線的包語句(package badugi.server
  2. 命中ALT + ENTER
  3. 選擇選項移動打包的Badugi .server。這將自動修復你的目錄結構相匹配的聲明的包

  1. 在Project Explorer中右鍵點擊SRC
  2. 選擇新建/包和創建包的Badugi
  3. 選擇客戶端和服務器包並將它們拖到badugi包
+1

我應該怎麼做,如果我喜歡,50班,所有都將被移動到包?有沒有辦法,或者我只需要手動Alt +輸入全部? – parsecer 2016-12-13 21:32:11

1

我ha d由於損壞或可能過時的intellij文件導致相同的問題。在更新到14.0.2之前,我有一個完全正常工作的項目,包含正確命名的包和文件層次結構。

更新後,maven編譯工作順利,但Intellij報告了特定程序包上的上述錯誤(其他具有類似特性的程序包未受影響)。

我沒打算進一步調查(對不起,我不得不在其他地方調查我的時間),但我刪除了我的.iml文件和.idea文件夾,失效的緩存,重新啓動IDE並重新打開項目,依靠我的maven配置。

注意:這樣可以有效地刪除運行和調試配置!

也許有人理解intellij工作區文件可以對此發表評論?

對那些進一步搜索的人的另一種評論:在SC管理的項目中進行重構會留下灰塵 - 我碰巧有一個「舊」文件夾,它重複了當前的包結構。如果.iml或.idea文件有這些包的任何引用很可能的IntelliJ會感到困惑與舊包引用。祝你好運,同胞堆棧交換者。

更新:我刪除了引用的maven項目中的一些文件,並且怪癖已經返回。所以,我的帖子絕不是最終的答案。

0

我只是用類似的問題戰鬥。我解決它的方法是設置Intellij模塊的根源文件以匹配原始項目根文件夾。然後我需要標記某些文件夾,如項目導航面板(即不應該在新的項目中使用的一個,對我來說這是Android的下使用部分)除外。就這樣。

-2

它可以告訴的IntelliJ忽略這個錯誤。

文件>設置>編輯器>檢查,然後在右側搜索「錯誤的包語句」(在Java下,可能的錯誤)並取消選中它。

+1

這只是隱藏了問題。它沒有解決它。 – Eden 2017-11-08 09:51:07

19

我有同樣的問題,並通過修改我的項目的.iml文件固定它:

來源:

<content url="file://$MODULE_DIR$"> 
    <sourceFolder url="file://$MODULE_DIR$/src/wrong/entry/here" isTestSource="false" /> 
    <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" /> 
    <excludeFolder url="file://$MODULE_DIR$/target" /> 
</content> 

要:

<content url="file://$MODULE_DIR$"> 
    <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> 
    <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" /> 
    <excludeFolder url="file://$MODULE_DIR$/target" /> 
</content> 

不知怎的,一包文件夾成爲指定爲此項目導入時的根源目錄。

+1

尼斯:),這是唯一對我有用的東西。 – 2015-08-03 12:52:06

+1

這應該是被接受的答案。您不希望更改在生產環境中工作的應用程序的文件結構(可能導致您必須重新構建生成過程)。相反,你應該改變你的IDE,以便它適當地計算出來。 – 2017-10-02 15:21:09

8

我也看到過這個錯誤,我一直能夠通過正確識別項目的模塊設置來解決它。在IntelliJ中,右鍵單擊頂級項目 - >「打開模塊設置」。這應該與整個項目的結構和內容確定爲「源文件夾」,「測試源文件夾」等。確保這些設置是否正確打開了一個窗口。對於「源文件夾」,確保該文件夾是您的src /或src/java(或任何您的源語言),視情況而定

+0

謝謝!經過幾次嘗試,我可以正確設置源代碼,而無需更改任何源代碼,並且我的項目已修復。 – Pangur 2017-07-19 13:45:40

2

您應該在Project結構中聲明(Ctrl + Alt + Shift在模塊部分+ S)標記你的文件夾,哪些是源代碼包(藍色),哪些測試?

+0

我已經添加它作爲源包,但它不斷變回,我不知道爲什麼。 – Searene 2016-08-08 09:01:30

+0

@Searene:無效緩存並重新啓動可能會對您有所幫助 – 2016-08-09 06:14:31

2

一下添加到pom.xml(在project標籤內)

<build> 
    <sourceDirectory>src/main/java</sourceDirectory> 
</build> 

src/main/java是您要設置的源文件夾。如果您的pom.xml文件中已經有此行,請檢查它是否正確。

+0

好極了,這個簡單的解決方案能夠工作! – super1ha1 2016-10-10 01:46:35

+0

對我而言,我從\t \t src更改爲\t \t src/main/java super1ha1 2016-10-10 01:47:58

0

也許有人遇到類似的警告,我曾與一個Scala項目。

Package names doesn't correspond to directories structure, this may cause problems with resolve to classes from this file Inspection for files with package statement which does not correspond to package structure.

該文件是在正確的位置,所以輔助解決方案的IDE提供了也沒有什麼幫助enter image description here 移動文件說,文件已經存在(這是真的),並重新命名包實際上它移至不正確的包。

問題是,如果您有Scala對象,則必須確保文件中的第一個對象與文件名具有相同的名稱,因此解決方案是移動文件內的對象。

相關問題