无法从与类相同的文件夹中加载xml

时间:2014-09-09 20:10:50

标签: java xml

我对Java很陌生,我几周前才开始编写代码,所以请耐心等待我:)

我想通过HTTP Post Request发送XML文件,我能够完美地模拟所有内容,问题是当我不创建XML,但实际上有一个XML,与我的类在同一级别上,我似乎无法使用它,无论我做什么,我放入了什么路径,我无法加载文件。

例如: 我有一个类caleld SendPostRequest.class,在同一目录下我有details.xml,我正在尝试:

getClass().getResource("details.xml");   // returns null

我已经尝试了所有其他组合,完整路径,或者从我通过System.getProperty("user.dir"); 的路径拍摄而没有任何东西,它只是不会加载。

我确定我错过了一些非常愚蠢的东西,我正在使用Intellij,有没有这样做的捷径? 对于初学者,我只是想将xml加载到一个String中,只是为了将其打印出来以便看到它的工作......

提前多多感谢!

3 个答案:

答案 0 :(得分:1)

您是否可以使用Maven构建?我问的原因是因为我最近遇到了同样奇怪的问题,我只是无法加载.xml文件,因为它没有包含在内置的jar中,但为什么呢?它应该是.... 经过一些故障排除后,我最终进入了pom.xml,结果证明文件扩展名为*.xml的资源未包含在构建中。

<project>
  ...
  <build>
    ...
    <resources>
      <resource>
        ...
        <includes>
           <include>**/*.xml</include>
        </includes>
      </resource>

在上面的片段中添加文件扩展名之后一切都很好,xml文件是在jar中构建的,我可以访问该资源。 不知道你是否属于这种情况,但是这个糟糕的小包括给我带来了几个小时...... ...

答案 1 :(得分:0)

getClass().getResource()不是从文件系统路径加载资源,而是从类路径加载资源。确保该文件位于类路径中。

答案 2 :(得分:0)

如果你正在运行linux / unix,请确保你的java应用程序有权阅读它。您写道,您已经尝试通过完整路径加载此文件?

您可以尝试打印出当前工作目录,如下所示:

public class Test
{
    public static void main(final String[] args)
    {
        final String dir = System.getProperty("user.dir");
        System.out.println("current dir = " + dir);
    }
}

然后尝试添加当前目录的相对路径以便在文件中读取。