Windows Docker容器中执行catalina.bat run时如何设置JVM参数?
指定自定义JVM路径启动Tomcat(catalina.bat run方式)
好问题!当你用catalina.bat run直接启动Tomcat时,没法像Windows服务模式那样直接使用--Jvm参数——因为这个参数是Tomcat服务包装器(比如tomcat8.exe)专属的,而catalina.bat是通过调用java.exe直接启动Tomcat进程的,它的参数逻辑和服务模式完全不同。不过有几种简单的方法可以指定你想要的jvm.dll路径:
方法1:临时设置环境变量后启动
你可以在启动前临时指定JRE_HOME(或JAVA_HOME)环境变量,指向包含目标jvm.dll的JRE/JDK目录。Tomcat的catalina.bat会自动从这个路径下找到对应的jvm.dll。
比如在命令行里执行:
set JRE_HOME=C:\Program Files\Oracle Java Server\jre catalina.bat run
如果想把两条命令合并成一行,用&&连接即可:
set JRE_HOME=C:\Program Files\Oracle Java Server\jre && catalina.bat run
方法2:永久修改catalina.bat配置
如果希望每次用catalina.bat启动都使用这个JVM,你可以直接修改catalina.bat文件:
- 打开Tomcat安装目录下的
bin\catalina.bat - 在文件最开头(
@echo off之后)添加一行环境变量设置:set JRE_HOME=C:\Program Files\Oracle Java Server\jre - 保存文件后,下次执行
catalina.bat run就会自动使用指定的JVM了。
补充说明
为什么--Jvm参数在这里没用?
Tomcat的Windows服务包装器(
tomcatX.exe)是一个独立的程序,它负责把Tomcat注册成Windows服务,同时需要明确指定jvm.dll路径来加载JVM。而catalina.bat是通过系统中已有的java.exe来启动Tomcat,java.exe本身会从JRE_HOME或JAVA_HOME指向的目录中加载jvm.dll,所以不需要额外传递--Jvm这类参数。
内容的提问来源于stack exchange,提问作者user1911
相关产品推荐
相关产品推荐

