gpt4 book ai didi

java - Package.getImplementationVersion() 返回 NULL

转载 作者:行者123 更新时间:2023-12-04 12:04:01 25 4
gpt4 key购买 nike

在此先感谢您的帮助。

我想要实现的是项目版本( Implementation-Version )在启动时打印在一个类中,以便我可以从日志文件中跟踪版本。

我构建了一个包含以下类的 JAR 文件:

com.company.core.common.ClassA
com.company.core.security.ClassB
com.company.core.sql.ClassC

com.company.core.sql.ClassC 的构造函数中,我要拨打 System.out.println()打印出 Implementation-Version存储在 META-INF/MANIFEST.MF文件通过调用 this.class.getPackage().getImplementationVersion() ,但它越来越 null通过 Maven 测试类启动类时的值。

我的 MANIFEST.MF文件包含以下详细信息:
Manifest-Version: 1.0
Implementation-Title: Company Core Library
Implementation-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: simon
Implementation-Vendor-Id: com.company.core
Build-Time: 2017-02-18T15:07:33Z
Class-Path: lib/sqljdbc42-4.2.jar lib/log4j-api-2.7.jar lib/log4j-core
-2.7.jar lib/json-20160810.jar lib/junit-4.12.jar lib/hamcrest-core-1
.3.jar
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_102
Implementation-Vendor: Company

Name: com/company/core/
Implementation-Vendor-Id: com.company.core
Implementation-Title: Company Core Library
Implementation-Version: 1.0
Implementation-Vendor: Company

我能得到 Implementation-Version吗?在 Maven 测试类中?
如果是,我在这里错过了什么?

谢谢。

问候,
西蒙。

最佳答案

在开发环境中,所有类文件都可以在命名文件夹目标中找到(例如在 Eclipse 中)。包路径表示为目录结构。对于目录结构,未定义 list 的存在。因此,专用类加载器将忽略对 list 的所有请求。这就是调用返回 null 的原因。
在生产环境中运行,您的产品被打包在一个 jar 文件中。在这种情况下,它被定义为有一个 list 文件。 jar 文件类加载器知道 list 文件并将正确显示版本信息。
如果在开发环境中检索到版本,我们通过提供默认的“实现版本”来帮助我们。

关于java - Package.getImplementationVersion() 返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42317297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com