我正在尝试将应用程序从jdk 1.5迁移到jdk 1.6,而不会引入对最终用户可见的任何更改。 应用程序的输出是使用jaxp生成的xml,它是jdk库的一部分。由于jaxp版本在jdk 1.5和1.6中不同,因此生成的xml在每个版本中看起来都不相同。如何在jdk 1.6中使用jaxp 3?
举例:DatatypeFatory.newInstance().newDuration(60)
在jdk1.5中生成'PT2H17M0.000S',在jdk1.6生成'P0Y0M0DT2H17M0.000S'。两者都是正确的,但我想避免任何可见的变化。
像DatatypeFactory这样的类有一个机制,它允许指定应该使用哪个实现,但它依赖于指定全限定类名。因此,理论上我可以下载与jdk 1.5中使用的版本相同的jaxp jar,并让应用程序使用它们。不幸的是,两个版本中的包和类名是相同的,所以我不得不通过java来从jar中加载类,而不是jdk。我试图在classpath的开头放置jaxp jar,但它没有帮助。
是否有可能告诉java从外部jar而不是jdk库加载类?我能用其他方式解决这个问题吗?
在此先感谢
您也可以使用自己的ClassLoader。 DocumentBuilderFactory newInstance(String factoryClassName,ClassLoader classLoader) – 2012-12-10 08:34:55