我不明白 - 我試圖獲取文件的路徑,以便文件(圖像)可以作爲附件包含在電子郵件中。作爲字符串的資源文件路徑(不是流式傳輸)
我的系統由兩部分組成 - 一個web應用程序和一個jar。 (實際上有三個部分 - 一個包含DAO的通用共享jar等)
它們都是使用maven構建的。 它們都包含在這個形象該路徑:
的src /主/資源/ logo_48.png
Web應用程序:
String logo1 = getClass().getClassLoader().getResource("logo_48.png").getPath();
這完美的作品 - 無論是本地(Windows)和Linux的
罐應用:
String logo1 = getClass().getClassLoader().getResource("logo_48.png").getPath(); //doesn't work
我已經採取了從這裏DVICE: How to access resources in JAR file? 這裏: Reading a resource file from within jar 這裏: http://www.coderanch.com/t/552720/java/java/access-text-file-JAR
和其他
大多數的答案提供加載該文件作爲流等,但我只希望得到的路徑分配給字符串。其他資源導致我只能在幾小時內盜用代碼才能發現最終結果不起作用。
/home/kalton/daily.jar!logo_48.png這麼多的情況下,後不存在錯誤,我很沮喪,並在以下解決方法解決:
直接拷貝的logo_48.png到所在文件夾罐子所在(/家/ kalton /)
改變我的罐子應用代碼:
String logo1 = "/home/kalton/logo_48.png";
和它的作品。
任何人都可以讓我看到正確的方式從未打開的JAR獲取資源文件夾中文件的PATH(作爲字符串)嗎? 這個問題讓我瘋狂了幾個星期! 在此先感謝。 KA。
添加 '路徑' 的實際使用代碼使用的清晰度:
public static MimeMultipart assemble4SO(String logoTop, String emailHTMLText) throws MessagingException, IOException {
MimeMultipart content = new MimeMultipart("related");
String cid = Long.toString(System.currentTimeMillis());
String cidB = cid + "b";
String cssStyle = "";
String body = "<html><head>" + cssStyle + "</head><body><div>" + "<img src='cid:" + cid + "'/>" + emailHTMLText + "<img src='cid:" + cidB + "'/></div></body></html>";
MimeBodyPart textPart = new MimeBodyPart();
textPart.setContent(body, "text/html; charset=utf-8");
content.addBodyPart(textPart);
//add an inline image
MimeBodyPart imagePart = new MimeBodyPart();
imagePart.attachFile(logoTop);
imagePart.setContentID("<" + cid + ">");
imagePart.setDisposition(MimeBodyPart.INLINE);
content.addBodyPart(imagePart);
.............
我建議您停止從coderanch.com獲取建議。有98%的答案完全錯誤。 – VGR
由於jar文件中的資源不是文件系統上的文件,因此無法獲取jar文件中資源的文件路徑。這是一個zip條目。你爲什麼需要這條路?您使用哪個API發送電子郵件並創建附件?你的代碼是什麼? –