Java FileNotFoundException

时间:2011-11-10 16:21:43

标签: java

这对我来说可能是非常愚蠢的,但我已经和它斗争了一个小时。

鉴于这些类,所有这些类都在同一个包中:

  • ParsingClass.java
  • CatalogHandler.java(扩展DefaultHandler,添加ConfigMap字段)
  • hd.xml

由于类和XML在同一个包中,我没想到要找到XML文件。不幸的是,最好的计划经常出错。

private static Map<String, Object> parseCatalogXml(String catalogName) {

    SAXParserFactory factory = SAXParserFactory.newInstance();

    CatalogHandler handler = new CatalogHandler();

    try {
        SAXParser parser = factory.newSAXParser();
        File file = new File(catalogName + ".xml");
        if (!file.exists()) {
            throw new IllegalStateException("Unable to find file: " + file.getName());
        }
        parser.parse(file, handler);
    } catch (SAXException ex) {

    } catch (ParserConfigurationException ex) {

    } catch (IOException ex) {

    }

    return handler.getConfigMap();

}

使用新文件(“”)。getAbsolutePath()无法在IDE中使用,也无法在命令行上使用maven。

5 个答案:

答案 0 :(得分:1)

我认为这是一个类路径/工作目录问题@Jason。即使您的文件“全部在同一个包中”,也不意味着Java正在该目录中运行。

您最可能需要做的是将XML文件移动到另一个“源文件夹”(Eclipse语言)。在我的项目中,我有我的来源:

src/main/java

以及我的XML和其他配置文件:

src/main/resources

然后,您可以在类路径的顶部找到XML文件,例如:

ClassLoader.getSystemResourceAsStream(catalogName + ".xml");

答案 1 :(得分:0)

当您加载这样的hd.xml时,该文件需要位于您启动程序所在的同一目录中。

这意味着,在/ home / user /中调用java,然后hd.xml需要位于/home/user/hd.xml中。

答案 2 :(得分:0)

只需执行new File("file.txt");将在工作目录(启动该程序的目录)中查找文件。

答案 3 :(得分:0)

尝试使用以下文件获取文件:

new File(getClass().getResource("/"+catalogName + ".xml").getPath());

答案 4 :(得分:0)

如果hd.xml包含了您的程序,您应该阅读Class.getResource()