为了账号安全,请及时绑定邮箱和手机立即绑定

Java:从代码中获取我的项目名称

Java:从代码中获取我的项目名称

冉冉说 2021-11-11 15:46:55
我正在努力实现我认为是一件简单的事情。假设我有以下文件夹结构:myProjectName/src/com/company/Class1myProjectName/src/com/otherCompany/somePackage/Class2我想写一段代码,如果从 Class1 或 Class 2 调用,它将简单地返回 myProjectName所以基本上我只想获取我的 Java 项目的名称(不是当前工作目录!)在网上找不到任何东西。我看过反思,但没有运气。
查看完整描述

3 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

简单地说:没有好的(内置)方法可以实现这一目标。

你看,当你看:

myProjectName/src/com/company/Class1

只有名 com.company.Class1 在运行时可见。Java 语言中绝对没有涵盖该myProjectName部分的概念。

换句话说:该名称是信息。是的,Carlos 的答案为您提供了一种访问方法,但我仍然认为这更像是一种破解而不是解决方案。

一个更好的方法:简单地创建一个类ProjectInfo,或者可能ComponentInfo包含这样的信息。

含义:不要依赖文件系统名称。如果您有属于项目/组件/单元/...的东西,那么将该“概念”作为源代码的一部分。ProtectionDomainCodeSource类的意图更多是关于安全性之类的。它并不意味着像“项目名称”这样的元信息的“容器”。


查看完整回答
反对 回复 2021-11-11
?
茅侃侃

TA贡献1842条经验 获得超21个赞

刚找到,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 关注
  • 1151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信