У меня есть автономное приложение, в котором есть один из модулей для отправки электронных писем. Это приложение поставляется в виде исполняемого 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
вы можете попробовать использовать ClassPathResource без преобразования его в файл. Затем он должен работать из JAR. – vikingsteve
не повезло с этим изменением тоже :( – gpa