有没有一种方法可以以编程方式获取当前java邮件API的版本?

4

我需要获取当前类路径中使用的Java Mail API jar包的版本。不能使用

IMAPStore.class.getPackage().getImplementaionVersion() 

因为在我们的生产环境中,它会返回 null,这是由于以下两个原因之一:
1.自定义类加载器(jarsafe);
2.我们在发布产品时会提取所有JAR包(包括邮件API和其他第三方JAR/库),并将它们放入单个JAR文件中,然后清除了manifest信息。
邮件API是否支持像 System.getProperty 等方法?

1
这是什么类型的应用程序(Web应用程序,独立应用程序等),以及如何构建它? - Arnaud
这是一个独立的Java应用程序,它有自己的jar文件以及其他库,但是这些库首先被提取出来并放入类路径中的一个单一的jar文件中。 - benchpresser
1个回答

1
如果其他方法都无效,丑陋的解决方案可能是从类路径中grep邮件api jar名称。它可能包含版本号。
但是,如果您将所有jar文件“shading”到单个jar文件中,我认为此信息也会从类路径信息中丢失,因为没有更具体的jar文件用于邮件api。
猜测:
getPackage().getImplementationVersion()

使用属性文件/清单来排除阴影,因此返回null。
也许您可以检查创建阴影JAR的过程。也许您可以添加一个步骤,将版本作为属性文件复制,以便稍后读取。
如果涉及已经“部署”的系统,并且上述操作不再可行,我想编程解决方案的选项非常少。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接