在 Spring Boot 項目中,當你在 src/main/java
下看到目錄結構而不是包結構時,這通常是 IDE(如 IntelliJ IDEA)的顯示問題或項目配置問題。以下是原因和解決方案:
問題原因
-
IDE 未正確識別 Java 源代碼根目錄
src/main/java
沒有被標記為 Sources Root(源代碼根目錄)- 導致 IDE 將其視為普通文件夾而非 Java 包結構
-
包名不符合 Java 規范
- Java 包名要求全小寫字母(如
com.example
) - 如果目錄名包含大寫字母或非法字符(如
SpringbootMybatisDay10A
),IDE 可能不會識別為包
- Java 包名要求全小寫字母(如
-
項目構建工具配置問題
- Maven/Gradle 配置錯誤,未正確指定源代碼路徑
解決方案
方法 1:在 IDE 中標記源代碼根目錄(推薦)
以 IntelliJ IDEA 為例:
- 右鍵點擊
src/main/java
目錄 - 選擇 Mark Directory as → Sources Root
Project └── src└── main├── java [Mark as Sources Root] ?└── resources
- 刷新項目:IDE 會自動將目錄轉換為包結構
方法 2:修正包名(全小寫)
- 將包名改為全小寫(Java 規范要求):
- com.shmily.springbootmybatisday10.mapper.SpringbootMybatisDay10A + com.shmily.springbootmybatisday10.mapper.springbootmybatisday10a
- 在 IDE 中重命名目錄:
- 右鍵目錄 → Refactor → Rename
- 使用全小寫格式(如
springbootmybatisday10a
)
方法 3:檢查 Maven 配置
確保 pom.xml
正確指定了源代碼目錄:
<build><sourceDirectory>src/main/java</sourceDirectory>
</build>
方法 4:重建項目結構
如果以上無效,手動創建包:
- 在
src/main/java
下右鍵 → New → Package - 按層級輸入包名(用
.
分隔):com.shmily.springbootmybatisday10.mapper
- IDE 會自動生成嵌套的包結構:
src/main/java └── com└── shmily└── springbootmybatisday10└── mapper [Package圖標]
預期效果 vs 錯誤效果
正確狀態(包) | 錯誤狀態(目錄) |
---|---|
顯示為 黃色圓點圖標 🟡 | 顯示為 普通文件夾圖標 📁 |
可創建 Java 類文件 | 無法直接創建 Java 類 |
包名用 . 分隔層級 | 目錄名顯示完整路徑 |
預防措施
- 創建項目時使用正確命名:
- 在 Spring Initializr 中,使用全小寫的 Group 和 Artifact:
Group: com.shmily Artifact: springbootmybatisday10
- 在 Spring Initializr 中,使用全小寫的 Group 和 Artifact:
- 避免手動創建目錄:
- 始終通過 IDE 的 New → Package 創建包
- 檢查項目配置:
- 確保
src/main/java
是 Sources Root - 確保
src/test/java
是 Test Sources Root
- 確保
💡 在 IntelliJ IDEA 中,黃色圖標表示 Java 包,藍色圖標表示普通目錄。通過正確標記 Sources Root,你的目錄結構會自動轉換為包結構。