2013-02-22 4 views
0

У меня есть автономное приложение, в котором есть один из модулей для отправки электронных писем. Это приложение поставляется в виде исполняемого JAR, содержащего все файлы ресурсов, включая изображения.Файл java jar file file image

Я использую весной для отправки электронной почты, который содержит следующий код для встраиваемого:

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 
+1

вы можете попробовать использовать ClassPathResource без преобразования его в файл. Затем он должен работать из JAR. – vikingsteve

+0

не повезло с этим изменением тоже :( – gpa

ответ

0

опция только левый из копирования файлов изображений в папку, и ссылки оттуда ...

1

Вам нужно обработать изображение как поток вместо файла. Файлы представляют собой концепцию, которая действительна только в файловой системе, но вы пытаетесь получить доступ к чему-то внутри Jar, который не является файловой системой.

+0

* «Вам нужно обработать изображение как поток» * ..или URL .. * «вместо файла». * –

+0

Я попытался с объектом InputStreamSource из ClassPathResource, чтобы пройти InputStream, но все равно не находит. – gpa

+0

Внутри вашей банки, где находится файл? – Hiro2k