我在试图找出解决路径问题的最佳解决方案时遇到了一些问题。我正在运行一个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";
谢谢大家
答案 0 :(得分:1)
鉴于你是从MyClass调用它,你应该打电话
File directory = (new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath())).getParentFile();
我曾经有过同样的问题。除了Jatin的答案之外,我还必须添加一个toURI()来获取所有平台(Windows等)上的正确路径并发布1.5个JVM。
答案 1 :(得分:0)
如果说你是从jar文件运行的话:
new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getParent()+"/"
返回包含jar文件的文件夹。
移除上方的.getParent()
以获取确切class
文件的路径