我想在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。我究竟做錯了什麼?
謝謝!這可能是原因。我使用了barcode4j擴展的單獨jar,現在一切正常。我總是在最後查看eclipse列出的重寫文件列表,但似乎忘記了關於META-INF/services的eclipse。 –