繁体   English   中英

写入jar内的文件

[英]Writing to a file inside of a 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时却不能运行。 还有没有人可以解决这个问题?

我也在为这个例外而苦苦挣扎。 但终于找到了解决方案。

当您使用.toURI()时,它会返回类似

D:/folderName/folderName/Settings.xml

因此,您将获得异常“ URI不是分层的”

为了避免此调用,返回的URI上的方法getPath()会返回类似

/D:/folderName/folderName/Settings.xml

现在是分层的。

就您而言,代码中的第五行应为

File file = new File(Duct.class.getResource("/Settings.xml").toURI().getPath());

默认的类加载器期望类路径是静态的(因此它可以大量缓存),因此该方法将不起作用。

如果可以找到合适的位置,可以将Settings.xml放在文件系统中。 这很可能是特定于供应商和平台的,但是可以完成。

Settings.xml的位置添加到classpath

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM