0

我在试图找出解决路径问题的最佳方法时遇到了一点问题。我正在运行一个 java 测试,我想得到两件事。

  1. 项目绝对位置
  2. 当前正在运行的类文件的绝对位置

我想在操作系统版本上正确 / 或 \ 以使文件夹结构保持不变。我目前正在使用它,但这并不是我想要的

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";

多谢你们

4

2 回答 2

1

鉴于您是从 MyClass 调用它,您应该调用 File directory = (new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath())).getParentFile();

我曾经有同样的问题。除了 Jatin 的回答之外,我还必须添加一个 toURI() 以获得所有平台(Windows 等)上的正确路径并发布 1.5 JVM。

于 2013-05-06T20:28:02.440 回答
0

如果说您正在从 jar 文件运行:

new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getParent()+"/"

返回包含 jar 文件的文件夹。

删除.getParent()上述内容以获取确切class文件的路径

于 2013-05-06T19:31:19.370 回答