亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java:從代碼中獲取我的項目名稱

Java:從代碼中獲取我的項目名稱

冉冉說 2021-11-11 15:46:55
我正在努力實現我認為是一件簡單的事情。假設我有以下文件夾結構:myProjectName/src/com/company/Class1myProjectName/src/com/otherCompany/somePackage/Class2我想寫一段代碼,如果從 Class1 或 Class 2 調用,它將簡單地返回 myProjectName所以基本上我只想獲取我的 Java 項目的名稱(不是當前工作目錄?。┰诰W上找不到任何東西。我看過反思,但沒有運氣。
查看完整描述

3 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

簡單地說:沒有好的(內置)方法可以實現這一目標。

你看,當你看:

myProjectName/src/com/company/Class1

只有名 com.company.Class1 在運行時可見。Java 語言中絕對沒有涵蓋該myProjectName部分的概念。

換句話說:該名稱是信息。是的,Carlos 的答案為您提供了一種訪問方法,但我仍然認為這更像是一種破解而不是解決方案。

一個更好的方法:簡單地創建一個類ProjectInfo,或者可能ComponentInfo包含這樣的信息。

含義:不要依賴文件系統名稱。如果您有屬于項目/組件/單元/...的東西,那么將該“概念”作為源代碼的一部分。ProtectionDomainCodeSource類的意圖更多是關于安全性之類的。它并不意味著像“項目名稱”這樣的元信息的“容器”。


查看完整回答
反對 回復 2021-11-11
?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

剛找到,20年前做的。您可以使用以下命令獲取代碼所在的目錄:

getClass().getProtectionDomain().getCodeSource().getLocation()

這用于列出編譯后的代碼所在的 JAR。它也應該適用于文件系統。對于一些基本的字符串,路徑或URL雜耍,你應該能夠路徑的正確的組件分開。

另請注意,這是編譯代碼所在的位置,不一定是代碼所在的位置,也就是說,主要不是項目名稱 - 這僅在開發時有效。另請閱讀 GhostCat 的回答!


查看完整回答
反對 回復 2021-11-11
?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

到目前為止我所擁有的(但不是 100% 可靠)是:


String workingDir = System.getProperty("user.dir")

int indexOfSrcFolder = workingDir .indexOf("src")


String pathToProject = workingDir.substring(0, indexOfSrc)


查看完整回答
反對 回復 2021-11-11
  • 3 回答
  • 0 關注
  • 1186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號