Java JAXB定位器-缺少依赖项?

Java JAXB定位器-缺少依赖项?,java,xml,xsd,jaxb,xjc,Java,Xml,Xsd,Jaxb,Xjc,在我当前的项目中,我们从XSD文件生成JAXB bean。 我们需要bean上的行号信息(除了XSD验证错误!),因此我使用了这里指定的-Xlocator选项: 但是,我缺少Locator类。在那六年前的页面上引用的jar文件在任何地方都找不到,因为我根本没有在任何网站上看到JWSDP的下载 XJC死了吗?我应该用别的东西吗 编辑:解决方案必须使用Java1.5,XJC还远未消亡,但您所引用的页面是古老的,适用于JAXB1。Java6包含JAXB2.1(参见文档)。令人恼火的是,当你今天进行谷

在我当前的项目中,我们从XSD文件生成JAXB bean。 我们需要bean上的行号信息(除了XSD验证错误!),因此我使用了这里指定的-Xlocator选项:

但是,我缺少Locator类。在那六年前的页面上引用的jar文件在任何地方都找不到,因为我根本没有在任何网站上看到JWSDP的下载

XJC死了吗?我应该用别的东西吗


编辑:解决方案必须使用Java1.5,XJC还远未消亡,但您所引用的页面是古老的,适用于JAXB1。Java6包含JAXB2.1(参见文档)。令人恼火的是,当你今天进行谷歌搜索时,你得到的大多数点击都是过时的JAXB1引用

我不确定你的要求是什么。你说的“我们需要豆子上的行号信息”是什么意思


编辑:您提到了
@XmlLocation
注释。这是Java6和JAXB参考实现中的非标准注释,您将在Java5中使用它。类名是
com.sun.xml.bind.annotation.XmlLocation
,javadoc是。您可以从中获得的参考实现(如果您还没有)

XJC远未消亡,但您所引用的页面是古老的,适用于JAXB1。Java6包含JAXB2.1(参见文档)。令人恼火的是,当你今天进行谷歌搜索时,你得到的大多数点击都是过时的JAXB1引用

我不确定你的要求是什么。你说的“我们需要豆子上的行号信息”是什么意思


编辑:您提到了
@XmlLocation
注释。这是Java6和JAXB参考实现中的非标准注释,您将在Java5中使用它。类名是
com.sun.xml.bind.annotation.XmlLocation
,javadoc是。您可以从中获得的参考实现(如果您还没有)

我发现了问题,或者至少是部分问题。XJC生成到XmlLocation和Locatable的“内部”包版本的导入。别问我为什么


我编写了一个小脚本,用正确的导入替换这些导入,现在似乎工作正常。

我发现了问题,或者至少是部分问题。XJC生成到XmlLocation和Locatable的“内部”包版本的导入。别问我为什么


我编写了一个小脚本,用正确的导入替换这些导入,现在似乎工作正常。

谢谢。我下载了jaxb-impl.jar,因为jaxb-api.jar已经包含在Java6API中。以防其他人需要linux脚本来替换Wouter提到的错误导入

导航到项目路径并调整
com.abc.generated
abc.xsd

#!/bin/sh
xjc -d src/ -p com.abc.generated -Xlocator abc.xsd

FILES=$(find src/ -type f -name *.java)
for f in $FILES
do
    sed -i 's/\(.*import com.sun.xml.internal.bind.Locatable;.*\)/import com.sun.xml.bind.Locatable;/g' $f
    sed -i 's/\(.*import com.sun.xml.internal.bind.annotation.XmlLocation;.*\)/import com.sun.xml.bind.annotation.XmlLocation;/g' $f
done

多谢各位。我下载了jaxb-impl.jar,因为jaxb-api.jar已经包含在Java6API中。以防其他人需要linux脚本来替换Wouter提到的错误导入

导航到项目路径并调整
com.abc.generated
abc.xsd

#!/bin/sh
xjc -d src/ -p com.abc.generated -Xlocator abc.xsd

FILES=$(find src/ -type f -name *.java)
for f in $FILES
do
    sed -i 's/\(.*import com.sun.xml.internal.bind.Locatable;.*\)/import com.sun.xml.bind.Locatable;/g' $f
    sed -i 's/\(.*import com.sun.xml.internal.bind.annotation.XmlLocation;.*\)/import com.sun.xml.bind.annotation.XmlLocation;/g' $f
done

对于Maven用户,添加依赖项

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2.7</version>
</dependency>


对于Maven用户,添加依赖项

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2.7</version>
</dependency>


我希望每个bean跟踪它在XML文件中的来源,即行号和列号(不过行就足够了)。似乎XJC支持这一点(通过-Xlocator),而JAXB似乎通过@XmlLocation注释支持这一点,但如果没有这种依赖性,我就无法让它工作。如果相关的话:我们正在使用Java1.5。谢谢你的补充,但是。。。也许我很笨,但我在那个网站上找不到合适的下载。我可以下载一个包含一个10MB类的jar,但这对我来说用处不大。在哪里可以下载正确的jar?我希望每个bean跟踪它在XML文件中的来源,即行号和列号(不过行就足够了)。似乎XJC支持这一点(通过-Xlocator),而JAXB似乎通过@XmlLocation注释支持这一点,但如果没有这种依赖性,我就无法让它工作。如果相关的话:我们正在使用Java1.5。谢谢你的补充,但是。。。也许我很笨,但我在那个网站上找不到合适的下载。我可以下载一个包含一个10MB类的jar,但这对我来说用处不大。我在哪里可以下载正确的jar?我在Java board中创建了一个问题,因为它在Java 1.8中仍然存在。我在JavaBoard中创建了一个问题,因为它仍然存在于Java1.8中。