0

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 を実行すると機能しない理由を知っている人はいますか。また、誰かが問題の解決策を持っていますか?

4

3 に答える 3

0

私もこの例外に苦労していました。しかし、最終的に解決策を見つけました。

.toURI() を使用すると、次のようなものが返されます

D:/folderName/folderName/Settings.xml

したがって、「URIは階層的ではありません」という例外が発生します

これを回避するには、返された URI でメソッドgetPath()を呼び出します。これは次のようなものを返します。

/D:/folderName/folderName/Settings.xml

これは階層化されています。

あなたの場合、コードの5行目は

File file = new File(Duct.class.getResource("/Settings.xml").toURI().getPath());
于 2013-02-18T13:27:11.187 に答える
0

デフォルトのクラス・ローダーは、クラスパスが静的であることを想定しているため(大量にキャッシュできるため)、このアプローチは機能しません。

配置する適切な場所を取得できる場合は、Settings.xml をファイル システムに配置できます。これはおそらくベンダーとプラットフォーム固有のものですが、実行できます。

于 2012-01-14T20:39:19.917 に答える
0

の場所を に追加しSettings.xmlますclasspath

于 2012-01-14T20:55:27.907 に答える