tomcat 需要的 JRE 版本和 war 包的 JRE 版本之间有什么关联?

278 天前
 movq

一个服务器 server ,它上面的 JRE 的版本是 S

假如 tomcat 需要的 JRE 版本是 T, 那么 S>=T 就能让 tomcat 运行

如果一个 war 包 web app 的 JRE 版本是 A ,那么能把这个 app 部署到此 server 的 tomcat 的要求,到底是 S>=A 还是 T>=A 还是 T==A?

我觉得既然是在 server 上面运行,就是用 server 的 JVM 运行 war 包的代码,所以必须 S>=A ,但是 tomcat (T)和 war 包 app (A)之间的 Java 版本有没有兼容性要求呢?

1411 次点击
所在节点    程序员
6 条回复
derdct
278 天前
没用什么内部骚 api 的话, 取 T/A 最大的和 S 对比就行了吧...
S>=max(T,A)
LeegoYih
278 天前
我玩过某个游戏就是 5 编译的,用 8 11 能跑,但是 17 不行,原因不明。
dyv9
278 天前
@LeegoYih 因为 java 11 早 java 9 大改后唯一一个保持兼容的大版本,之后删除了不少东西。
vhwwls
278 天前
印象中没有这种强制性要求,Tomcat 的版本要求和 APP 自己的版本要求基本上可以说没什么关系,但是 APP 和 Server 上的 JDK 版本是有关系的,所以我支持一楼的 S>=max(T,A)。
foolishcrab
278 天前
理论上一楼是对的,但是实际上推荐 sat 全部一致,发行版都一致最好。
某些包会依赖 rt.jar 里的奇怪东西
julyclyde
278 天前
tomcat 和 war 其实是同一个进程啊
所以必须是同一个 jre 运行他们

至于怎么选版本,需要看二者的兼容范围

建议不要再文物级 jdk 上继续开发

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1026391

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX