又见SERVER: Error filterStart

简介:       又耗费了将近的一天的时间,都是因为这个恼人的SERVER: Error filterStart.       今天要把原来一个运行良好的网站发布到另外一台服务器上,原本应该是很简单的事情,在估计任务时,我只给它了半天时间(其实已经是多的了,只需要安装Tomcat和新建一个数据库即可)。

      又耗费了将近的一天的时间,都是因为这个恼人的SERVER: Error filterStart.

      今天要把原来一个运行良好的网站发布到另外一台服务器上,原本应该是很简单的事情,在估计任务时,我只给它了半天时间(其实已经是多的了,只需要安装Tomcat和新建一个数据库即可)。可是当我把原来的程序复制到tomcat的webpps目录下以后,在浏览器输入地址浏览,才发现大事不妙,页面显示无法找到资源。首先想到的,就是查看tomcat的log。

      7-Jul-10 10:18:40 AM org.apache.catalina.core.StandardContext start SEVERE: Error filterStart 7-Jul-10 10:18:40 AM org.apache.catalina.core.StandardContext start SEVERE: Context [/test] startup failed due to previous errors

      看到这句话就知道大事不妙,因为曾经有过类似的经验,这次就知道是由于JDK版本不对引起的问题。问题在于:这两台服务器的道理有什么不同?

      1. 是不是Tomcat的版本不一致?Log里写的清楚:INFO: Starting Servlet Engine: Apache Tomcat/5.5.23

          看来这个问题不存在。

      2. 那肯定就是两台服务器的Java环境配置有问题。运行java -version 命令查看,都是:OpenJDK(1.6.0)。看来这个问题也不存在

      这不就奇怪了吗?!!

      先把Filter去掉,看看运行里面的Servlet是不是会有更加明确的错误信息。果不其然,被我逮到了:

      web.servlet.BugManageServlet (unrecognized class file version) 

            java.lang.VMClassLoader.defineClass(libgcj.so.7rh)

      看来还是Java环境设置有问题。Google一下吧,发现下面一篇文章:

     http://www.linuxquestions.org/questions/linux-newbie-8/unrecognized-class-file-version-when-running-simple-java-program-686753/

      原来是因为javac和java不同版本造成的。可是我的程序都是编译过直接复制到Tomcat下面的,难道也存在这个问题?(如果有对Tomcat内部细节了解的大侠看到,能帮忙解答下,不胜感激!)不管怎么样,先检查再说,果然问题浮现:

       java -version: 1.6.0

    javac -version: 1.4.2

      虽然看到了不一样(问题2是存在),还是有些怀疑。不过现在也别无它法,将二者改为一致版本总归没有坏处。不过上面帖子中提到的命令不太会用。接着Google,发现:

      在CentOS上安装Sun-JDK1.6

      想想在Console中下载和安装Sun JDK实在麻烦,就先作为备选方案,接着看Open JDK。因为之前已经安装了Open JDK,就想用alternatives命令,结果提示命令不存在,就赶紧向旁边的Linux大牛Alix请教。他说切换到root时,使用"sudo su -",后面的减号一定要加上,这样就可以重新加载bash profile。果真灵验,牛!

      alternatives --config java

      已经是open-jdk-1.6.0

      alternatives --config javac

      选项中只有jdk-1.4.2,没有其他可选项。看来安装的Open JDK中,不包含javac命令,那就说只安装了jre(/usr/lib/jvm/java-1.6.0-openjdk.x86_64目录里只有jre)。

      于是:yum search jdk

      出来了一个长长的列表,一眼就看了java-1.6.0-openjdk-devel.x86_64,好像想起有文章说过要编译java程序,需要安装这个development包。为了安全起见,直接

      yum install java-1.6.0-openjdk-*

      安装完毕,重新alternatives --config javac,这次多了open jdk 1.6.0的选项。

      然后,清空tomcat/work目录,重启tomcat,浏览器访问,OK!

 

      我的另外一篇文章:由于JRE版本导致的Error filterStart问题

目录
相关文章
C语言:十进制、BCD码互换
C语言:十进制、BCD码互换
C语言:十进制、BCD码互换
|
人工智能 异构计算 Python
解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
563 1
解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
|
域名解析 弹性计算 网络安全
CEN+私网NAT实现跨地域访问云服务需求-CEN企业版
本文介绍了如何通过企业版云企业网和私网NAT配置,实现ECS内网跨地域访问OSS资源的方法。该方法避免了跨地域配置云服务网段时可能出现的管控异常问题,适用于其他云服务如MQ等。
|
JavaScript
|
SQL 关系型数据库 MySQL
MySQL数据库中给表添加字段并设置备注的脚本编写
通过上述步骤,你可以在MySQL数据库中给表成功添加新字段并为其设置备注。这样的操作对于保持数据库结构的清晰和最新非常重要,同时也帮助团队成员理解数据模型的变化和字段的具体含义。在实际操作中,记得调整脚本以适应具体的数据库和表名称,以及字段的详细规范。
401 8
CRC与FCS的区别和联系
CRC与FCS的区别和联系
1050 0
|
JSON Android开发 数据格式
android 使用GSON 序列化对象出现字段被优化问题解决方案
android 使用GSON 序列化对象出现字段被优化问题解决方案
331 0
|
小程序 JavaScript 前端开发
微信小程序(三十一)自定义watch监听属性
微信小程序并没有为我们在普通的页面中提供类似vue中watch类似的监听属性。 还是那句话,人家没给,你还想用,自己定义一个。
466 0
|
安全 持续交付 数据安全/隐私保护
Docker 安全性考量:隔离、权限和漏洞管理,保障容器化环境的稳健与可信
Docker 安全性考量:隔离、权限和漏洞管理,保障容器化环境的稳健与可信
948 0
|
Linux iOS开发 Docker
基于菜鸟教程安装docker
基于菜鸟教程安装docker

热门文章

最新文章