我正在尝试将应用程序从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库加载类?我可以用其他方式解决这个问题吗?
提前致谢
答案 0 :(得分:0)
不幸的是,两个版本中的包和类名是相同的,所以我必须以某种方式告诉java从jar而不是jdk加载类。
全部由classLoader决定。 1.你不能除了jdk lib。 2.你的第三个罐子有相同的名称和类名。
你可以做的其他事情,用第三个jar的packageName重写,然后重新编译。