如何在注册表编辑器中找到tomcat版本?

5us2dqdw  于 2021-10-10  发布在  Java
关注(0)|答案(2)|浏览(459)

一些现有的答案是转到software\apache software foundation\tomcatversion
但是我找不到任何tomcatversion目录
我确实有

SOFTWARE\Apache Software Foundation\Tomcat\9.0\Tomcat9

在这里面,有一个version属性,它告诉我们tomcat的版本是9
但目标文件夹位置会随版本而更改。如果我有tomcat8,目标文件夹位置是

SOFTWARE\Apache Software Foundation\Tomcat\8.0\Tomcat8

我需要一个固定的路径来告诉我设备上现有的tomcat版本。提前谢谢。

noj0wjuj

noj0wjuj1#

你不能。没有路径可以告诉您安装的apache tomcat的确切版本。你有几个选择。
有一个 version.[bat|sh] 编入 $CATALINA_HOME/bin 这将报告确切的tomcat版本以及操作系统和jvm信息。这就要求 JAVA_HOME 已正确设置环境变量。
如果你看电视 /META-INF/MANIFEST.MF 归档 $CATALINA_HOME/lib/catalina.jar 你会发现 Implementation-Version 字段,其中列出了确切的版本。请注意,规范JAR报告的是规范实现版本,而不是tomcat版本,因此您可以;不要随便挑瓶子。
您还可以在以下位置找到版本信息: /org/apache/catalina/util/ServerInfo.properties 在里面 $CATALINA_HOME/lib/catalina.jar .
当tomcat启动时,完整的版本信息也会在日志中报告。

u3r8eeie

u3r8eeie2#

我发布这篇文章也许是为了激励其他人。
我有一个非常愚蠢的想法,可能会奏效,调用powershell并通过命令获取tomcat版本,然后读取输出,这样您就可以用它做您想做的事情。
请注意,此代码是jugaad!

using (Process process = new Process())
{
    process.StartInfo.FileName = "powershell.exe";
    process.StartInfo.Arguments = "(get-service Tomcat*).DisplayName";
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.RedirectStandardOutput = true;
    process.Start();

    // Synchronously read the standard output of the spawned process.
    StreamReader reader = process.StandardOutput;
    string output = reader.ReadToEnd();

    process.WaitForExit();

    //do whatever you want with output (such as string manipulation) here
}

帮助我的帖子:这里和这里

相关问题