java写入jar中的文件
我在给一家公司写信时遇到了问题。jar中的xml文件。当我在我的Netbeans IDE中使用以下代码时,不会发生错误,并且它可以很好地写入文件
public void saveSettings(){
Properties prop = new Properties();
FileOutputStream out;
try {
File file = new File(Duct.class.getResource("/Settings.xml").toURI());
out = new FileOutputStream(file);
prop.setProperty("LAST_FILE", getLastFile());
try {
prop.storeToXML(out,null);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.toString());
}
try {
out.close();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.toString());
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.toString());
}
}
但是,当我执行jar时,我会收到一个错误,上面写着:
IllegalArguementException: uri is not hierachal
有人知道为什么我在Netbeans中运行它时它工作,而在我执行jar时它不工作吗。还有谁有办法解决这个问题吗
# 1 楼答案
默认类加载器期望类路径是静态的(因此它可以大量缓存),因此这种方法不起作用
你可以设置。如果可以在文件系统中找到合适的位置放置xml。这很可能是特定于供应商和平台的,但可以做到
# 2 楼答案
将
Settings.xml
的位置添加到classpath
# 3 楼答案
我也在为这个例外而挣扎。但最终找到了解决办法
当你使用。toURI()返回如下内容
因此会出现异常“URI不是分层的”
为避免此调用,返回URI上的方法getPath(),该方法返回如下内容
现在是分层的
在您的情况下,代码中的第5行应该是