2013-05-31 89 views
0

我想在xsl fop轉換過程中生成一個條形碼(Code128)。正如在apache fop文檔(和barcode4j文檔)中所說的那樣,如果您想使用擴展,請將其放在類路徑中。這適用於從eclipse運行的桌面應用程序和applet。但如何從瀏覽器運行它?作爲一個概念證明,我將所有東西都提取到了所謂的「fat-jar」 - 一個jar,所有的東西都從eclipse中重新打包爲「Export to runnable jar」,並將「將所需的庫提取到生成的JAR中」。除了條碼生成外,一切都如預期的那樣工作(翻譯和許多其他事情)。這是我唯一的apache fop擴展,所以我想這個問題是關於classpath的,因爲applet沒有這種東西。如何在java applet中使用apache fop擴展(f.e. barcode4j)

這裏是我的HTML的主要部分:

<html lang="en-US"> 
    <body> 
    <script src="http://www.java.com/js/deployJava.js"></script> 
    <script> var attributes = { codebase:'.', code:'com.signapplet.SignApplet.class', archive:'SignApplet.jar', width:1024, height:968}; 
      var parameters = {jnlp_href: 'SignApplet.jnlp'} ; 
      deployJava.runApplet(attributes, parameters, '1.6'); 
    </script> 
    </body> 
</html> 

和JNLP:

<?xml version="1.0" encoding="UTF-8"?> 
<jnlp spec="1.0+" codebase="" href=""> 
<information> 
    <title>Sign Applet</title> 
    <vendor>me</vendor> 
</information> 
<security><all-permissions/></security> 
<resources> 
    <j2se version="1.6+" 
      href="http://java.sun.com/products/autodl/j2se"/> 
    <jar href="SignApplet.jar" main="true" /> 
</resources> 
<applet-desc 
    name="Sign Applet" 
    main-class="com.signapplet.SignApplet" 
    width="300" 
    height="300" > 
</applet-desc> 
<update check="background"/> 
</jnlp> 

我會補充說,Java控制檯中我有標準的胡言亂語(「19:43:04429 WARN FOUserAgent:97 - 未知的格式化對象「{http://barcode4j.krysalis.org/ns}高度」遇到(code128的孩子)(沒有可用的上下文信息)「)因爲我傷口不包括正確的完整barcode4j擴展名,但我檢查了一切, jar文件加上一切正常在日食。

這是從barcode4j網頁複製/粘貼示例代碼:

<fo:block> 
    <fo:instream-foreign-object> 
    <barcode:barcode 
      xmlns:barcode="http://barcode4j.krysalis.org/ns" 
      message="my message" orientation="90"> 
     <barcode:code128> 
     <barcode:height>8mm</barcode:height> 
     </barcode:code128> 
    </barcode:barcode> 
    </fo:instream-foreign-object> 
</fo:block> 

我使用最新barcode4j-FOP-EXT-complete.jar和Apache的FOP 1.1。我究竟做錯了什麼?

回答

0

如果您不小心,創建「fat-jar」可能會丟失重複文件。 FOP擴展由JAR Service Provider Mechanism(META-INF /服務方法)發現。這意味着您必須合併而不是覆蓋META-INF/services中的文件。

+0

謝謝!這可能是原因。我使用了barcode4j擴展的單獨jar,現在一切正常。我總是在最後查看eclipse列出的重寫文件列表,但似乎忘記了關於META-INF/services的eclipse。 –