`
Foxswily
  • 浏览: 77439 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

小心JRE升级带来的麻烦

阅读更多
Windows 2003的服务器部署了Tomcat(6.0.29)服务,JRE版本是Java 6 Update 21,一直稳定运行,前几天维护时更新了JRE到Update24,结果造成Tomcat启动失败,log没任何记录,最后查到是jvm.dll版本问题。

之前为了调优在Tomcat Config里指定了server\jvm.dll,完全按JRE安装包内README操作,copy JDK_HOME\jre\bin\server到JRE目录
引用

    jre\bin\server\
        On Microsoft Windows platforms, the JDK includes both
        the Java HotSpot(TM) Server VM and Java HotSpot Client VM.
        However, the Java SE Runtime Environment for Microsoft Windows
        platforms includes only the Java HotSpot Client VM. Those wishing
        to use the Java HotSpot Server VM with the Java SE Runtime
        Environment may copy the JDK's jre\bin\server folder to a
        bin\server directory in the Java SE Runtime Environment. Software
        vendors may redistribute the Java HotSpot Server VM with their
        redistributions of the Java SE Runtime Environment.


近期的JRE升级并不会更新server目录的jvm.dll造成Tomcat服务启动失败,严重质疑这官方解决方案,后续隐患不断。

-----------2011-04-07 更新------------------------
几个关键点
·安装为服务的Tomcat,在Config中要制定jvm.dll地址,这个指定决定了使用client模式还是server模式,生产模式server模式基本是必选,会提高性能

·默认的JRE更新不会更新自身ReadMe建议的从JDK目录copy过来的jvm.dll

·Java 6 Update 22推荐升级
分享到:
评论
11 楼 albertshaw 2011-04-07  
Java SE Runtime Environment

SE EE 看花眼了
10 楼 魔力猫咪 2011-04-07  
这个话指的是Java Applet和桌面应用。并不涉及JavaEE开发。人家说的是JavaSE,你却往JavaEE上面套。
如果你说的正确,那么Oracle现在自己的JavaEE包里面应该是JRE而不是JDK。
9 楼 Foxswily 2011-04-07  
魔力猫咪 写道
Foxswily 写道
魔力猫咪 写道
绝大多数Java服务器都要求JDK而不是JRE。这个你可以看一下各个不同版本服务器的说明文档。要求的基本上都是JDK的。
我目前只在Tomcat的安装文档里面看到JRE,其他服务器软件都要求的是JDK。


使用JRE运行这是Java基本规范,即便是JDK也是用里边包含的JRE运行而已。对JRE体积太大的抱怨由来已久,要真要求带个JDK,更疯了

很多软件,特别是服务器很多都是必须用到JDK的。不然也不会专门在安装指南中写明了。我不知道你是否是做带嵌入服务器一类的应用的。除非是这种应用,不然不应该对这个问题提出意见。
对于服务器软件来说,JDK并不大。WebSphere、WebLogic等等动辄都几百M,大点的套装好几G。几十M的JDK实在是太小了。


跑题了....那就先跑下去再说

http://www.java-tips.org/java-se-tips/java.lang/what-is-the-difference-between-jdk-and-jre.html
引用

The "JDK" is the Java Development Kit. I.e., the JDK is bundle of software that you can use to develop Java based software. The "JRE" is the Java Runtime Environment. I.e., the JRE is an implementation of the Java Virtual Machine which actually executes Java programs.

Typically, each JDK contains one (or more) JRE's along with the various development tools like the Java source compilers, bundling and deployment tools, debuggers, development libraries, etc.

看看JDK和JRE的区别,JDK只是包含了JRE和一些工具的开发包,如果不考虑维护、调优之类的工作完全可以使用JRE替代JDK做运行。

再说回在服务器部署的问题,如果是Linux/Unix环境完全没现在的问题,而在Windows平台上JRE是可以自动更新的,JDK不会,在JRE不提供Server模式(jvm.dll)的前提下,官方提供的方案是使用JDK的server\jvm.dll

这已经是个悖论了,要么使用JDK不自动升级,要么使用JRE不能用Server模式的自动升级。如果Sun是故意这么做来表达对Windows的鄙视那无话可说。只是在WinOS上做维护的哥们要多个心眼,升级版本要多加小心。

8 楼 rockis 2011-04-07  
web容器需要jdk是因为需要在运行时将编译jsp。JRE里面没有编译时需要的库。如果表现层不用jsp,而是freemarker或velocity,用jre就足够了。
7 楼 freish 2011-04-07  
ls这些人的回答能让人疯掉

根本没分清楚jdk,jre的作用
6 楼 魔力猫咪 2011-04-07  
Foxswily 写道
魔力猫咪 写道
绝大多数Java服务器都要求JDK而不是JRE。这个你可以看一下各个不同版本服务器的说明文档。要求的基本上都是JDK的。
我目前只在Tomcat的安装文档里面看到JRE,其他服务器软件都要求的是JDK。


使用JRE运行这是Java基本规范,即便是JDK也是用里边包含的JRE运行而已。对JRE体积太大的抱怨由来已久,要真要求带个JDK,更疯了

很多软件,特别是服务器很多都是必须用到JDK的。不然也不会专门在安装指南中写明了。我不知道你是否是做带嵌入服务器一类的应用的。除非是这种应用,不然不应该对这个问题提出意见。
对于服务器软件来说,JDK并不大。WebSphere、WebLogic等等动辄都几百M,大点的套装好几G。几十M的JDK实在是太小了。
5 楼 myreligion 2011-04-07  
JRE跑swing的吧?服务端还有人用JRE跑?
4 楼 Foxswily 2011-04-07  
魔力猫咪 写道
绝大多数Java服务器都要求JDK而不是JRE。这个你可以看一下各个不同版本服务器的说明文档。要求的基本上都是JDK的。
我目前只在Tomcat的安装文档里面看到JRE,其他服务器软件都要求的是JDK。


使用JRE运行这是Java基本规范,即便是JDK也是用里边包含的JRE运行而已。对JRE体积太大的抱怨由来已久,要真要求带个JDK,更疯了
3 楼 魔力猫咪 2011-04-07  
绝大多数Java服务器都要求JDK而不是JRE。这个你可以看一下各个不同版本服务器的说明文档。要求的基本上都是JDK的。
我目前只在Tomcat的安装文档里面看到JRE,其他服务器软件都要求的是JDK。
2 楼 Foxswily 2011-04-07  
魔力猫咪 写道
Tomcat需要的是JDK不是JRE。你应该更新JDK,而不是只更新JRE。
很奇怪你的机器居然没有安装JDK,只靠JRE运行。不至于差这点地方吧。


JDK:Java Development Kit
JRE:Java Runtime Environment

一个是开发环境一个是运行环境,正常情况只靠JRE就足以运行,猫咪对这个理解有点偏差吧....

生产环境使用server模式几乎是必然的优化,而Windows版的JRE竟然没有提供,在自带的README里就有了那段提示,提示从JDK里copy,不了解Sun的用意何在。恰恰在copy之后升级了JRE,这个升级并不会更新copy过去的server目录(主要是jvm.dll),结果版本不同,运行自然挂掉。找到相同版本JDK\jre\bin\server,再copy过去问题解决。
1 楼 魔力猫咪 2011-04-07  
Tomcat需要的是JDK不是JRE。你应该更新JDK,而不是只更新JRE。
很奇怪你的机器居然没有安装JDK,只靠JRE运行。不至于差这点地方吧。

相关推荐

    JRE瘦身 jre减肥 精简jre jre精简

    因为很多用户的电脑上没有合适版本的jre。用一个软件的同时必须安装另外一个软件(jre)会给人一种流氓软件强行捆绑的感觉,而很多用户对此很抵触。更不要提用户电脑上的jre版本千变万化(有没有jre,是微软的还是...

    studio2.2.3的jre文件夹

    用户可能需要替换升级后AS 3.0中的默认JRE,使用这个特定版本的JRE来恢复中文输入功能。 针对这个问题,我们可以提供以下几点详细知识: 1. **Java运行环境(JRE)**:JRE是Java应用程序执行所需的基础组件,包括...

    JRE1.6 Win32 X86

    对于仍在使用旧版Java应用的用户,保持JRE1.6的更新是必要的,但也要意识到这可能带来的安全风险,因为旧版本不再接受官方的安全更新。因此,升级到最新版本的Java(如果应用程序兼容)是明智的选择。

    jre9下载 jdk9

    对于开发者而言,升级到JRE 9意味着需要适应新的API和编程模式。例如,模块系统的引入可能要求重构已有的代码库,以符合新的模块化标准。此外,开发者还需要了解新的JDK工具,如JShell,以利用其带来的便利。 总之...

    精简jre步骤 迷你jre制作过程

    精简jre步骤 1. 拷贝一个完整版的jre文件夹到D盘 2. 删除jre目录下所有出bin和lib目录的所有文件或目录 3. 打开cmd窗口,设置path路径为空,转到D:\jre\bin目录,运行java –version。正常显示当前Java的版本。 4. ...

    jre1.6.25_32位

    总的来说,"jre1.6.25_32位"是一个专为Windows 32位系统设计的老版本Java运行环境,适用于那些需要运行基于Java 6的应用程序的用户,尤其是那些不能或不想升级到更高版本的场景。其无捆绑的特点保证了用户可以纯净地...

    jre6 java运行环境免安装版

    10. **维护与更新**: 虽然JRE6已经不再接收官方的安全更新,但为了系统的安全性,建议用户升级到最新版本的JRE或JDK。对于仍需使用JRE6的场合,可以选择第三方安全补丁或社区维护的版本。 总结来说,"jre6 java运行...

    android studio3.0.1的jre包替换

    此外,升级JRE可能会影响到其他依赖于特定JRE版本的软件,所以在替换前要权衡利弊。 总的来说,"android studio3.0.1的jre包替换"是一种针对特定问题的解决策略,通过调整开发环境的底层组件来提升软件的使用体验。...

    JRE1.8.0-391

    Java运行环境(JRE,Java Runtime Environment)是Java应用程序运行的...总之,JRE1.8.0_391作为Java 8的一个更新,旨在为用户提供一个更加安全、高效的运行环境,开发者和用户都应关注其更新内容,并适时进行升级。

    jre-8u241-linux-i586.tar.gz

    JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8....

    java的jre1.5

    Java的JRE1.5,全称为Java Runtime Environment 1.5,是...综上所述,Java的JRE1.5在语言特性、性能优化、安全性等方面都有显著进步,为开发者提供了更为强大和易用的开发环境,同时也为用户带来了更好的Java应用体验。

    jre 1.8.45 下载

    因此,为了系统的安全性,通常建议用户保持JRE版本的最新,及时升级到更安全的版本。 4. **安装与配置**:下载JRE 1.8.45后,用户需要进行安装,这通常包括解压文件、设置环境变量(如JAVA_HOME)以及确保系统路径...

    jre-8u301.zip

    (1)jre-8u301-linux-i586.rpm (2)jre-8u301-linux-i586.tar.gz (3)jre-8u301-linux-x64.rpm (4)jre-8u301-linux-x64.tar.gz (5)jre-8u301-macosx-x64.dmg (6)jre-8u301-macosx-x64.tar.gz (7)jre-8u...

    超级精简版的jre

    Java运行环境(JRE,Java Runtime Environment)是执行Java应用程序所必需的基础软件...然而,使用时需谨慎,因为它可能会影响到部分功能的正常使用,因此在选择使用精简版JRE时,需要充分考虑其可能带来的影响和风险。

    jre1.6安装版(含32位和64位)

    因此,建议用户及时升级到更高版本的JRE,如JRE 8或更高,以获取最新的安全补丁和性能优化。 7. **兼容性问题** 在某些老版本的操作系统或硬件环境下,JRE 1.6可能是唯一可行的选择。在这种情况下,理解JRE 1.6的...

    jre1.8.0.zip

    Java运行环境(JRE,Java Runtime Environment)是执行Java应用程序所必需的基础组件,它包含了Java虚拟机(JVM)、Java核心类库以及其他支持文件。"jre1.8.0.zip"是一个包含JRE 1.8.0版本的压缩包,其中的"jre1.8.0...

    jre1.8.0 64bit

    JRE 1.8.0的引入带来了许多重要的新特性和改进,其中最著名的是Lambda表达式,这是一种新的语法结构,使得函数式编程风格在Java中变得更为便捷。此外,还增强了类型推断、改进了垃圾收集算法,如G1垃圾收集器的优化...

    JRE7-32bit

    Java运行环境(JRE,Java Runtime Environment)是Java应用程序运行的必备组件,它包含了Java虚拟机(JVM,Java Virtual Machine)以及Java基础类库。标题中的“JRE7-32bit”指的是针对32位操作系统的Java运行环境第...

    jre1.8.0_161

    Java运行环境(JRE,Java Runtime Environment)是Java应用程序运行的必备组件,它包含了Java虚拟机(JVM,Java Virtual Machine)以及Java基础类库。标题中的"jre1.8.0_161"指的是Java运行环境的特定版本,1.8.0...

Global site tag (gtag.js) - Google Analytics