Classloader问题-如何确定要加载的库版本(jar文件)

问题描述 投票:27回答:5

我刚刚解决了另外一个*我虽然正在使用该版本的图书馆,但显然我的应用服务器已经加载了一个旧版本该库*问题(叹气)。

有人知道一种验证(或监视)您的应用程序是否可以访问所有适当的jar文件或已加载的类版本的好方法吗?

提前感谢!

[P.S。在我看来,这是一个很好的理由开始使用OSGi module architecture!]

更新This文章也有帮助!通过将JBoss的类加载器写入日志文件,它使我了解了哪些类加载。

我刚刚解决了另外一个*我虽然正在使用该版本的图书馆,但显然我的应用服务器已经加载了一个旧版本该库*问题(叹气)。有人知道一个好方法吗...

java jar classloader
5个回答
19
投票

如果您碰巧正在使用JBoss,则有一个MBean(类加载器存储库iirc),您可以在其中请求已加载特定类的所有类加载器。


6
投票

如果您在jar清单中有适当的版本信息,则可以使用一些方法来检索和测试版本。无需手动读取清单。


3
投票

在当前的Java版本中,库版本控制是一个很笼统的术语,它依赖于用有用清单正确打包的JAR。即使这样,正在运行的应用程序仍然需要大量工作来以有用的方式收集这些信息。 JVm运行时对您毫无帮助。


2
投票

我认为没有一种很好的方法来检查。我不确定您是否要这样做。您需要做的是熟悉应用程序服务器的类加载架构,并了解其工作原理。


0
投票

一定有比我做的更好的方法,但是我倾向于以非常手工的方式来做。

© www.soinside.com 2019 - 2024. All rights reserved.