猿问

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

我正在努力实现我认为是一件简单的事情。


假设我有以下文件夹结构:


myProjectName/src/com/company/Class1


myProjectName/src/com/otherCompany/somePackage/Class2

我想写一段代码,如果从 Class1 或 Class 2 调用,它将简单地返回 myProjectName


所以基本上我只想获取我的 Java 项目的名称(不是当前工作目录!)


在网上找不到任何东西。


我看过反思,但没有运气。


冉冉说
浏览 1152回答 3
3回答

浮云间

简单地说:没有好的(内置)方法可以实现这一目标。你看,当你看:myProjectName/src/com/company/Class1只有包名 com.company.Class1 在运行时可见。Java 语言中绝对没有涵盖该myProjectName部分的概念。换句话说:该名称是元信息。是的,Carlos 的答案为您提供了一种访问方法,但我仍然认为这更像是一种破解而不是解决方案。一个更好的方法:简单地创建一个类ProjectInfo,或者可能ComponentInfo包含这样的信息。含义:不要依赖文件系统名称。如果您有属于项目/组件/单元/...的东西,那么将该“概念”作为源代码的一部分。ProtectionDomain和CodeSource类的意图更多是关于安全性之类的。它并不意味着像“项目名称”这样的元信息的“容器”。

茅侃侃

刚找到,20年前做的。您可以使用以下命令获取代码所在的目录:getClass().getProtectionDomain().getCodeSource().getLocation()这用于列出编译后的代码所在的 JAR。它也应该适用于文件系统。对于一些基本的字符串,路径或URL杂耍,你应该能够路径的正确的组件分开。另请注意,这是编译代码所在的位置,不一定是源代码所在的位置,也就是说,主要不是项目名称 - 这仅在开发时有效。另请阅读 GhostCat 的回答!

泛舟湖上清波郎朗

到目前为止我所拥有的(但不是 100% 可靠)是:String workingDir = System.getProperty("user.dir")int indexOfSrcFolder = workingDir .indexOf("src")String pathToProject = workingDir.substring(0, indexOfSrc)
随时随地看视频慕课网APP

相关分类

Java
我要回答