如何在运行Tomcat时获取包版本?
我尝试getClass().getPackage().GetImplementationVersion(),但这总是返回null
。我想这是因为我的war还没有打包,而Tomcat执行了.classes(又名分解的war)。meta-inf\manifest.mf
存在于终战中,但不存在于target\
文件夹中
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)使用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参数的方法,我想避免使用它来检查它是什么类型。如果我可以做些类似的事情会更酷 问题答案: 您可以将鉴别符映射为只读属性: