如何在jdk 1.6中使用jaxp 3?

时间:2010-05-13 13:15:03

标签: java xml classloader

我正在尝试将应用程序从jdk 1.5迁移到jdk 1.6,而不会向最终用户显示任何可见的更改。 应用程序的输出是使用jaxp生成的xml,jaxp是jdk库的一部分。由于jaxp版本在jdk 1.5和1.6中有所不同,因此每个版本中生成的xml看起来都不同。

示例:DatatypeFatory.newInstance().newDuration(60)在jdk 1.5中生成'PT2H17M0.000S',在jdk 1.6中生成'P0Y0M0DT2H17M0.000S'。两者都是正确的,但我想避免任何明显的变化。

类DatatypeFactory之类的机制允许指定应该使用哪个实现,但它依赖于指定完全限定的类名。所以理论上我可以下载与jdk 1.5中使用的相同版本的jaxp jar并让应用程序使用它们。不幸的是,两个版本中的包和类名是相同的,所以我必须以某种方式告诉java从jar而不是jdk加载类。我试图将jaxp jar放在classpath的开头,但它没有帮助。

是否可以告诉java从外部jar而不是jdk库加载类?我可以用其他方式解决这个问题吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

不幸的是,两个版本中的包和类名是相同的,所以我必须以某种方式告诉java从jar而不是jdk加载类。

全部由classLoader决定。 1.你不能除了jdk lib。 2.你的第三个罐子有相同的名称和类名。

你可以做的其他事情,用第三个jar的packageName重写,然后重新编译。