对我来说,这可能是一件不可思议的蠢事,但我已经和它斗争了一个小时。
给定这些类,所有这些类都在同一个包中:
由于类和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。
发布于 2011-11-10 16:25:51
我认为这是一个类路径/工作目录问题@Jason。尽管您的文件“都在同一个包中”,但这并不意味着Java正在该目录中运行。
您最需要做的是将XML文件移动到另一个“源文件夹”(Eclipse语言)。在我的项目中,我有我的消息来源:
src/main/java以及我的XML和其他配置文件:
src/main/resources然后,您可以在类路径顶部找到XML文件,如下所示:
ClassLoader.getSystemResourceAsStream(catalogName + ".xml");发布于 2011-11-10 16:24:49
当您像这样加载hd.xml时,文件需要位于从您开始编程的同一目录中。
这意味着,调用java中的/home/user/然后hd.xml需要位于/home/user/hd.xml中。
发布于 2011-11-10 16:25:02
只要执行new File("file.txt");,就会在您的工作目录(启动程序的目录)中查找一个文件。
https://stackoverflow.com/questions/8082732
复制相似问题