Java获取当前路径

标签 java

我在尝试找出路径问题的最佳解决方案时遇到了一些问题。我正在运行一个 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";

谢谢大家

最佳答案

鉴于您是从 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/

相关文章:

java - Spring oauth2 - 授权服务和globalUserDetails之间的区别

java - java中如何处理sql异常?

java - 在 java 的 HashMap 中使用 char[] 数组

java - 以奇怪的颜色显示的图像

Java堆转储和堆分析后的堆大小不同

java - Android TCP 连接到 C 服务器 : String transferred is noisy

java - 在单个事务中运行 spring @Transactional 注释方法

java - 为什么我的 HashMap 将元素放在位置 6 而不是下一个空位置?

java - 古巴平台的应用洞察

java - JodaTime 在不同环境中的奇怪行为