我有一個需要調用JAXP的applet,具體爲SAXParserFactory。現在,你可以從Javadoc中看到,這在內部使用服務提供商機制記載here:如何愚弄Java服務提供商API(jaxp)
具體來說,如果沒有找到任何我的應用程序JAR文件的稱爲META-INF/services/javax.xml.parsers.SAXParserFactory
一個文件時,它會試圖從獲取它我應用程序代碼庫。如果我有我的小應用程序部署如下:
<applet code="com.example.applets.MyApplet"
codebase="http://www.example.com/myapp/" archive="myapp.jar, dom4j.jar">
然後,它會嘗試讓一個HTTP請求到http://www.example.com/myapp/META-INF/services/javax.xml.parsers.SAXParserFactory
我寧願它沒有這樣做,特別是因爲我的小程序簽署與本附加HTTP通話會觸發關於unsigned code的警告。
現在,顯而易見的解決方案就是將META-INF/services文件放入我的應用程序JAR中,但是如何執行此操作,但仍然可以使用JAXP的用戶JRE默認實現?或者,有沒有辦法說服小程序運行時只在我的JAR文件中看到,而不是在那個文件的codebase
?
注意:我知道我也可以部署我自己的JAXP-RI副本,但是這對於一個applet來說是相當重的。
看起來很有希望。我會嘗試併發布更新! – Dan 2010-11-17 21:11:15
這工作。接受答案。 – Dan 2010-11-18 20:55:02
它也適用於我。謝謝! – 2014-09-08 16:44:57