0

私は電子メールを送信するためのモジュールの 1 つを持つスタンドアロン アプリケーションを持っています。このアプリケーションは、イメージを含むすべてのリソース ファイルを含む実行可能な JAR としてパッケージ化されています。

インライン用の次のコードを含む電子メールの送信に春を使用しています。

Spring コードはorg.springframework.core.io.FileSystemResourceを使用しています

//IN-LINE ATTCHEMENTS
                if (null != msg.getInlineAttachments() && msg.getInlineAttachments().size() > 0) {
                    for (Map.Entry<String, File> e : msg.getInlineAttachments().entrySet()) {
                        if (log.isTraceEnabled()) {
                            log.trace("Conntent-ID:" + e.getKey() + ", Resource:" + e.getValue());
                        }
                        try {
                            helper.addInline(e.getKey(), new FileSystemResource(e.getValue()));
                        } catch (Exception e1) {
                            log.error(e1);
                        }
                    }
                }

ファイル イメージは、次を使用して上記のコードに渡されます。

    ClassPathResource res = new ClassPathResource("./images/" + name);
    if (log.isTraceEnabled()) {
        log.trace(res.getFile().getAbsolutePath());
    }
    file = res.getFile();

注: Eclipse の開発環境で実行すると、アプリケーションは正常に動作します。これは、展開された形式であり、jar ではないためです。

例外:

    java.io.FileNotFoundException: class path resource [images/app_logo.png] 
cannot be resolved to absolute file path because it does not reside in the file system:
 jar:file:/C:/TEMP/app-1.0/app-1.0.jar!/images/app_logo.png
4

2 に答える 2

1

画像をファイルではなくストリームとして処理する必要があります。ファイルはファイルシステムでのみ有効な概念ですが、ファイルシステムではない Jar 内の何かにアクセスしようとしています。

于 2013-02-22T18:44:41.833 に答える
0

省略された唯一のオプションは、画像ファイルを一時フォルダにコピーし、そこから参照することです...

于 2013-02-22T19:22:57.787 に答える