0

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

4

1 回答 1

1

我怀疑由于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.”&gt;
<echo message=”Generating java files from XSD using XJC compiler…” />
<mkdir dir=”output/java”/>
<exec executable=”xjc”&gt;
<arg value=”-d”/>
<arg value=”output/java”/>
<arg value=”test1.xsd”/>
<arg value=”test2.xsd”/>
</exec>
</target>

下面的代码片段显示了如何从 dtd 文件编译 Java 对象。

<div><macrodef name=”dtd2java”&gt;
<attribute name=”dtdDir”/>
<attribute name=”dtdFile”/>
<attribute name=”javaPackage”/>
<attribute name=”javaDir”/>
<sequential>
<mkdir dir=”output/java/@{javaDir}”/>
<exec executable=”xjc”&gt;
<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>
于 2013-09-11T09:26:40.887 回答