我在尝试找出路径问题的最佳解决方案时遇到了一些问题。我正在运行一个 java 测试,我想得到两件事。
- 项目的绝对位置
- 当前正在运行的类文件的绝对位置
我想要正确的/或\在操作系统版本上,以便文件夹结构保持完整。我目前正在使用这个,但它并不完全是我想要的
final String parentDir = System.getProperty("user.dir");
final String path = "src/test/java/" + method.getDeclaringClass()
.getCanonicalName().replaceAll("\\.", "/") + ".java";
如有任何帮助,我们将不胜感激。谢谢
更新:我正在尝试获取预编译代码的 url,因为我需要访问代码中的注释。这可能会改变你们一些人的答案
更新 2:好的,我开始工作了。
final String path = new File(getClass().getResource("/").getFile())
.getParent().split("target")[0] + "src/test/java/" + method
.getDeclaringClass().getCanonicalName()
.replaceAll("\\.", "/") + ".java";
谢谢大家
最佳答案
鉴于您是从 MyClass 调用此函数,您应该调用
文件目录 = (new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath())).getParentFile();
我曾经也有过同样的问题。除了 Jatin 的回答之外,我还必须添加一个 toURI() 来获取所有平台(Windows 等)上的正确路径并发布 1.5 JVM。
关于Java获取当前路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16405732/