如何在java applet中使用带扩展名的apache fop(f.e.barcode4j)

时间:2013-05-31 17:17:51

标签: java applet apache-fop barcode4j

我希望在xsl fop翻译期间生成条形码(Code128)。正如在apache fop文档(和barcode4j docs)中所述,如果你想使用扩展,请将它放在类路径上。这适用于桌面应用程序和从eclipse运行的applet。但是如何从浏览器运行它?

作为一个概念证明,我将所有内容提取到所谓的'fat-jar' - 一个jar,从Eclipse中重新打包的所有内容为“Export to runnable jar”,其中包含“Extract required libs into generated JAR”。除条形码生成外,一切都按预期工作(翻译和许多其他事情)。这是我唯一的apache fop扩展,所以我猜问题是关于提到的类路径,因为applet没有这样的东西?

这是我的主要部分:

<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:04,429 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。我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果你不小心,创建一个“fat-jar”会有丢失重复文件的风险。 FOP扩展由JAR Service Provider Mechanism(META-INF /服务方法)发现。这意味着您必须组合而不是覆盖META-INF / services中的文件。