当前位置: 首页 > 知识库问答 >
问题:

如何在运行Tomcat时获取包版本?

徐兴昌
2023-03-14

如何在运行Tomcat时获取包版本?

我尝试getClass().getPackage().GetImplementationVersion(),但这总是返回null。我想这是因为我的war还没有打包,而Tomcat执行了.classes(又名分解的war)。meta-inf\manifest.mf存在于终战中,但不存在于target\ \meta-inf 文件夹中

java.lang.Package

相关的是在运行时获取Maven工件版本

更新。之前我已经添加了war构建的配置。但是当从Eclipse运行Tomcat时,我得到null

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <archive>                   
            <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
            </manifest>
        </archive>
        <!-- this actually moves classes from \WEB-INF\classes to new jar 
        <archiveClasses>true</archiveClasses>
        -->
    </configuration>
</plugin>

共有1个答案

须新
2023-03-14

通过
1)使用mvn war:manifest
2)在webapp文件夹中创建meta-inf\manifest.mf来解决

version  = getClass().getPackage().getImplementationVersion();  
if (version==null) {
    Properties prop = new Properties();
    try {
        prop.load(getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF"));
        version = prop.getProperty("Implementation-Version");
    } catch (IOException e) {
        logger.error(e.toString());
    }
}
logger.info("Starting App version "+version);

感谢@javadude回答如何读取运行在apache Tomcat中的webapp的清单文件?

 类似资料:
  • 问题内容: 我需要解决JDK 1.5中的Java错误,该错误已在1.6中修复。我正在使用以下条件: 这对其他JVM有用吗?有更好的方法来检查吗? 问题答案: 是每个JVM中都存在的系统属性。有两种可能的格式: Java的8或降低:1.6.0_23,1.7.0,1.7.0_80,1.8.0_211 Java的9或更高:9.0.1,11.0.4,12,12.0.1 这是提取主要版本的技巧:如果它是版本

  • 问题内容: 我想知道是否有可能在运行时检索该类来自的jar的版本号? 我知道可以找到该类来自的jar: 但是版本呢? (假设其不在文件名中:) 问题答案:

  • 我想知道是否可以在运行时检索类的来源的jar的版本号? 我知道有可能找到类的来源: 但是一个版本呢? (假设它不在文件名中:))

  • 我正在尝试让Appfuse+Tomcat+jRebel工作。 我看着问题的标题,@Tech Junkie和@CPU100确实有最好的答案,但不是针对我遇到的场景。(我想知道运行的是我安装的tomcat还是“项目盗用的”tomcat)

  • 我正在尝试让Appfuse+tomcat+jRebel工作。 Appfuse默认使用Cargo下载tomcat(ver.7.0.33)并将应用程序部署到其中。我希望使用已经安装的tomcat(ver.7.0.27)而不是下载的。我根据appfuse常见问题进行了更改。 使用进行部署后,我如何知道实际运行的tomcat确实是7.0.27? 我曾经键入一个错误的URL(例如localhost:8080

  • 问题内容: 我们有以下课程 和这个 现在,我需要在运行时知道is是否为 。由于这是jpa自动处理的,因此我无法获取此值。 我们正在调用一个带有as参数的方法,我想避免使用它来检查它是什么类型。如果我可以做些类似的事情会更酷 问题答案: 您可以将鉴别符映射为只读属性: