簡體   English   中英

在使用ant build.xml進行編譯時,如何在沒有JDK庫的情況下使用外部庫

[英]How to use external library without JDK libraries while compiling using ant build.xml

我的程序以前使用過JDK 1.4。 現在我想用1.6來編譯它。 它已經成功地針對1.4進行了編譯,但是當我將JDK更改為1.6時,出現了以下編譯錯誤。

    [javac] symbol  : constructor StartTagInfo(java.lang.String,java.lang.String,java.lang.String,org.xml.sax.helpers.At
tributesImpl,com.abc.jaxb.ssdclm.impl.runtime.MSVValidator)
    [javac] location: class com.sun.msv.util.StartTagInfo
    [javac]             StartTagInfo sti = new StartTagInfo( 

但是我的類路徑中有jaxb-libs-jwsdp-1.6 jar,其中包含帶有上述構造函數的StartTagInfo類。 如果有人對這個問題有想法,請給我建議。 謝謝。

我懷疑由於JDK版本的更改,將會有一種支持lib jar的版本變得不兼容。 最糟糕的是它可能是本地lib jar。

我沒有提供當前問題的解決方案。 但是提供了另一種方法。 如果您無法使用這種方法更改代碼,請告訴我們; 我們將嘗試查找現有Java升級的問題。

使用Java 1.6,不再需要JWSDP包。 Java 1.6版本帶有內置的JAXB版本,因此可以直接使用它。

Java 1.6版本帶有“ xjc”編譯器,可從xml生成Java對象。

Usage: xjc [-options ...]

下面的代碼片段顯示了如何在ant腳本中使用1.6的xjc編譯器來生成XML文件形式的java對象。

下面的ant目標將編譯xsd文件test1.xsd和test2.xsd,並將xsd中的java對象創建到文件夾output / java中

<target name=”xsd2java” description=”Generate java model from XSD xml schema using XJC compiler.”>
<echo message=”Generating java files from XSD using XJC compiler…” />
<mkdir dir=”output/java”/>
<exec executable=”xjc”>
<arg value=”-d”/>
<arg value=”output/java”/>
<arg value=”test1.xsd”/>
<arg value=”test2.xsd”/>
</exec>
</target>

下面的代碼片段顯示了如何從dtd文件中編譯Java對象。

<div><macrodef name=”dtd2java”>
<attribute name=”dtdDir”/>
<attribute name=”dtdFile”/>
<attribute name=”javaPackage”/>
<attribute name=”javaDir”/>
<sequential>
<mkdir dir=”output/java/@{javaDir}”/>
<exec executable=”xjc”>
<arg value=”-d”/>
<arg value=”${output.dir}/java”/>
<arg value=”-p”/>
<arg value=”@{javaPackage}”/>
<arg value=”${output.dir}/java/@{javaDir}”/>
<arg value=”-extension”/><arg value=”-dtd”/>
<arg value=”@{dtdDir}/@{dtdFile}”/>
</exec>
</sequential>
</macrodef>
<target name=”dtd2java” description=”Generate java model from DTD using XJC2 compiler.” >
<echo message=”Generating java files from DTD using XJC2 compiler…”/>
<dtd2java dtdDir=”test/dtd” dtdFile=”test1.dtd” javaPackage=”com.test1.dtd” javaDir=”com/test1/dtd”/>
<dtd2java dtdDir=”test/dtd” dtdFile=”test2.dtd” javaPackage=”com.test2.dtd” javaDir=”com/test2/dtd”/>
</target>
</div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM