在Java中使用相对目录路径

我试图使用相对路径来定位Java类中的可执行文件,而不是使用硬编码的行,但使用类似于:

final static String directory = "../../../ggla/samples/obj/linux_x86"

失败…在Java中使用相对路径的正确方法是什么?

最可能的解释是您当前的目录不在您认为的位置。 您可以检查user.dir的系统属性以查看应用程序的基本路径,或者您可以执行以下操作:

  System.out.println(new File(".").getCanonicalPath()); 

在您使用相对路径调试相对引用开始的位置之前。

使用System.out.println(System.getProperty(“user.dir”)); 查看当前目录的位置。 然后,您可以使用此地址的相对路径。

或者,如果您不需要更新您尝试读取的文件,请使用getResourceAsStream(“filename”)从类路径中获取它;

卡尔

您需要的是getCanonicalPathgetCanonicalFile来解析相对路径。

 System.out.println(new File("../../../ggla/samples/obj/linux_x86") .getCanonicalPath()); 

您可以使用您描述的相对路径,它应该可以工作。 所以错误可能在其他地方。

请发布一个完整的程序来重现您的错误,然后我们可能会提供帮助。

我将首先使用Java File类中指定的分隔符和路径分隔符。 但是,正如我在评论中所说,我需要更多的信息而不是“失败”才能提供帮助。

对于相对路径,也许您可​​以使用java提供的方法之一作为getRelativePath的相对路径的开头….您必须在java中的String中使用/而不是//!