【问题标题】:How to use external library without JDK libraries while compiling using ant build.xml使用ant build.xml编译时如何使用没有JDK库的外部库
【发布时间】:2013-09-15 03:41:59
【问题描述】:

我的程序以前使用的是 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 类。 如果有人对这个问题有任何想法,请给我建议。谢谢。

【问题讨论】:

  • 你是否改变了 jaxb-libs-jwsdp-1.6 jar 版本以及 JDK 版本升级?
  • 是的,我做到了。但是遇到了同样的错误

标签: java xml ant build jaxb


【解决方案1】:

我怀疑由于JDK版本的变化,会有一个支持lib jar的版本变得不兼容。最糟糕的是它可能是一个原生的 lib jar。

我没有提供当前问题的解决方案。但提供另一种方法。如果您不能使用这种方法更改代码,请告诉我;我们将尝试找出现有 java 升级的问题。

在 Java 1.6 中,不再需要 JWSDP 包。 Java 1.6版本自带JAXB版本,可以直接使用。

Java 1.6 版本自带“xjc”编译器,可以从xml生成java对象。

Usage: xjc [-options ...]

下面的代码 sn-p 显示了如何在 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>

下面的代码 sn-p 显示了如何从 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>

【讨论】:

  • 你使用的 Jaxp jar 版本是什么?
  • jaxb-impl 1.0.1 jaxb-api-jwsdp-1.6 jaxb-libs-jwsdp-1.6.jar
  • @Niroshan,我问的是 jaxp jar (jaxp.java.net/downloads.html);这是 jaxb-libs-jwsdp-1.6 jar 的依赖 jar 文件
猜你喜欢
  • 1970-01-01
  • 2013-09-24
  • 2018-04-19
  • 2011-03-30
  • 2015-01-15
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
相关资源
最近更新 更多