【问题标题】:Java path in LinuxLinux 中的 Java 路径
【发布时间】:2017-09-25 21:11:51
【问题描述】:

我有点问题,我似乎不明白是什么原因造成的。 我的项目中有一个文件夹,在那个文件夹中我有一个类,我有一个资源文件(在本例中为 jasper 报告)。 但我可以访问文件的唯一方法是使用绝对路径或从我的项目的根目录开始的某个路径。

String path = "src/main/java/Views/LagerMain/lager.jrxml";

^^这有效,我的类 LagerController 和 lager.jrxml 都在 LagerMain 文件夹下,但是当我尝试这样做时:

String path = "lager.jrxml";

我有一个错误,即找不到文件。 我试着用谷歌搜索这个以获得更好的理解,但我什么也没找到。

底线,为什么我不能从班级访问我的文件,当他们都在同一个地方时,为什么相对路径不起作用。

【问题讨论】:

    标签: java linux path


    【解决方案1】:

    如果主类在不同的目录中,那么程序将尝试访问lager.jrxml,而不是常规类的目录。

    普通类目录

    String path = new String(MyClass.class.getProtectionDomain().getCodeSource().getLocation()
    .getPath() + System.getProperty("line.separator") + "lager.jrxml");
    

    如果这不起作用,试试这个:

    // your directory
    File f = new File("src");
    File[] matchingFiles = f.listFiles(new FilenameFilter() {
        public boolean accept(File dir, String name) {
            return name.startsWith("lager") && name.endsWith("jrxml");
        }
    });
    

    如果您有多个名称为lager.jrxml 的文件,则此方法将同时返回它们,您需要使用for 来循环浏览它们。否则,您可以使用

    String path = new String(matchingFiles[0].getAbsolutePath())
    

    对于主类目录

    String path = new String(System.getProperty("user.dir")
     + System.getProperty("line.separator") + "lager.jrxml");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-28
      相关资源
      最近更新 更多