首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java FileNotFoundException

Java FileNotFoundException
EN

Stack Overflow用户
提问于 2011-11-10 16:21:42
回答 5查看 3.4K关注 0票数 0

对我来说,这可能是一件不可思议的蠢事,但我已经和它斗争了一个小时。

给定这些类,所有这些类都在同一个包中:

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

由于类和XML在同一个包中,所以我不希望为了找到XML文件而斗争。不幸的是,最好的计划经常出错。

代码语言:javascript
复制
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。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-11-10 16:25:51

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

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

代码语言:javascript
复制
src/main/java

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

代码语言:javascript
复制
src/main/resources

然后,您可以在类路径顶部找到XML文件,如下所示:

代码语言:javascript
复制
ClassLoader.getSystemResourceAsStream(catalogName + ".xml");
票数 1
EN

Stack Overflow用户

发布于 2011-11-10 16:24:49

当您像这样加载hd.xml时,文件需要位于从您开始编程的同一目录中。

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

票数 0
EN

Stack Overflow用户

发布于 2011-11-10 16:25:02

只要执行new File("file.txt");,就会在您的工作目录(启动程序的目录)中查找一个文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8082732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档