我刚刚解决了另一个*我 - 虽然 - 我正在使用这个版本的库 - 但显然是我的应用程序服务器 - 已经加载了一个旧版本的-this-library-*issue(叹气).
有没有人知道验证(或监控)您的应用程序是否可以访问所有相应的jar文件或加载的类版本的好方法?
提前致谢!
[PS 在我的视图中开始使用OSGi模块架构的一个很好的理由!]
更新:这篇文章也有帮助!通过将JBoss的类加载器写入日志文件,它让我了解了JBoss的类加载器.
如果您碰巧使用JBoss,则有一个MBean(类加载器存储库iirc),您可以在其中请求已加载某个类的所有类加载器.
如果所有其他方法都失败了,那么总会有'java -verbose:class',它将为每个正在加载的类文件打印jar的位置.
如果您在jar清单中有适当的版本信息,则有检索和测试版本的方法.无需手动读取清单.
java.lang.Package .getImplementationVersion()和getSpecificationVersion()以及isCompatibleWith()听起来像是在做你正在寻找的东西.
您可以使用this.getClass().getPackage()以及其他方式获取Package.
java.lang.Package的javadoc没有为这些属性提供特定的清单属性名称.快速谷歌搜索在http://java.sun.com/docs/books/tutorial/deployment/jar/packageman.html上进行了搜索