2012-01-18 63 views
0

我的web應用程序基於Google Maps API,並且在嘗試訪問jar文件中的圖像時遇到問題。Google地圖標記圖像文件在jar文件中

我希望能夠做兩件事情:

  • 顯示在JavaScript地圖標記。
  • 在靜態地圖上顯示標記。

在這兩種情況下,我需要提供圖像文件的路徑。一旦Web應用程序部署在服務器中,此映像位於位於/ WEB-INF/lib文件夾中的jar文件中。

我認爲下面這行會起作用: iconMarker.image =「WEB-INF/lib/cimCore.jar!/ META-INF/resources/img /」+ ilMarker.icon;

但它顯示了在客戶端瀏覽器出現以下錯誤: :「!」「NetworkError 404沒有發現 - http://ip/cimWeb/WEB-INF/lib/cimCore.jar!/META-INF/resources/img/gsearch.png

的路徑是OK,所以我想在訪問藉助於性格不是正確的方式。

有什麼想法?

回答

0

你必須使用一個servlet將從類加載器加載圖像字節,流這些字節的響應:

  • 使用MyServlet.class.getResourceAsStream("/META-INF/resources/img/gsearch.png")到圖像
  • 電話上得到一個輸入流response.setContentType("image/png")
  • 得到響應輸出流
  • 讀取所有字節從輸入流,並將其寫入到輸出流

請注意,大多數MVC框架都支持將URL模式映射到類路徑資源,或者至少實現上述算法的一部分。

或者您可以將這些圖像從jar文件中提取出來,然後將它們放入可從外部訪問的資源的webapp樹中。

備註:WEB-INF在設計上無法從外部訪問。如果你想做什麼是可能的,任何人都可以竊取jar文件並配置任何基於Java的web應用程序。

+0

感謝您的支持。我將看看MyFaces這是我使用的框架。我認爲會有更通用的解決方案。 – 2012-01-18 15:40:59

+0

我使用URL中的庫名稱屬性找到了JSF 2的解決方案。 http://...webpath../javax.faces.resource/image.png.faces?ln = img然而,需要通過以下結構在jar文件中指定一個新庫:jar/META- INF /資源/ IMG – 2012-01-23 15:05:54