首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 套件命名鐵律:為什麼你的包名不能以 java 開頭?

     編輯:Java 綜合教學

一個經典的「理所當然」錯誤

專案結構長這樣:

com.company.project
└── java.util.mytools   ← 看起來很合理?
    └── MyClass.java

編譯通過,執行卻拋出:

Error: A JNI error has occurred...
java.lang.SecurityException: Prohibited package name: java.util.mytools

根本原因

JVM 類載入器強制封鎖:所有以 java.、javax.、sun.、com.sun. 開頭的包名均屬保留命名空間,僅限核心類庫使用。違者在 ClassLoader.defineClass 階段直接拋 SecurityException。

正確命名規範

  1. 全域唯一前綴:反轉公司域名(com.company、org.apache)
  2. 專案/模組名:project.module
  3. 功能領域:service、repository、config、util
  4. 全小寫、無底線:com.company.project.service.user

常見踩坑清單

錯誤包名原因修正範例
java.utils保留前綴com.myapp.utils
javax.servlet保留前綴com.myapp.web.servlet
sun.misc保留前綴com.myapp.internal
com.sun.tools保留前綴com.myapp.build
MyUtils大寫字母myutils
com.my_app含底線com.myapp

建議:IDE 檢查規則加入 CI

# SpotBugs / Error Prone 規則

  ^java\.|^javax\.|^sun\.|^com\.sun\.

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved