您的位置:首页 > 运维架构 > Tomcat

TOMCAT6.0 问题解决汇总(struts2相关) ——不断更新中

2010-03-12 12:52 531 查看
由于这两天学习struts2,把大量的小程序载入Tomcat,启动的时候产生了很多error,今天开始逐个攻破。在此记录便于以后查找。

也希望能够给为同样问题头疼的朋友们提个醒。

按照错误出现的先后来解决吧。

1. An incompatible version 1.1.4 of the Apache Tomcat Native library is installed, while Tomcat requires version 1.1.8

这个问题是说现在Tomcat中装的tcnative-1.dll的版本是1.1.4的,Tomcat 需要1.1.8版本的。

解决方法:

a. 上google 搜tcnative-1.dll 1.1.8的下载地址找到http://tomcat.heanet.ie/native/1.1.8/binaries/win32/tcnative-1.dll

b.将下载后的tcnative-1.dll 放到 /Program Files/Apache Software Foundation/Tomcat 6.0/bin中置换原来老板本的dll.

注意:置换之前要关闭所有用到他的进程。如IE,eclipse等。

结果:An old incompatible version 1.1.8 of the Apache Tomcat Native library is installed, while Tomcat requires version 1.1.10

对策:还是像上面的方法一样,再更新。

至于下载的地址大家可以参考这片博文,写的很详细。http://hi.baidu.com/chinagenius/blog/item/28c92d03adf478ea08fa93f8.html

以上,第一个问题解决完毕。

2.致命的: フィルタ Set Character Encoding の起動中の例外です
java.lang.ClassNotFoundException: filters.SetCharacterEncodingFilter

网上的朋友大多数都说是因为无法找到filters.SetCharacterEncodingFilter这个类引起的。至于这个类要加载的包怎么也查不到,最后找到了java 的一个开源代码,才恍然大悟,原来这个类根本就不是加载什么.jar文件的,就是一个继承自Filter类的,需要自己手动加入的类。

解决方法:

a. 我用的是eclipse,所以现在工程内新建一个叫[filters]的包,然后在这个包里写一个SetCharacterEncodingFilter的类。

类的代码可以从http://kickjava.com/src/filters/SetCharacterEncodingFilter.java.htm这个地址得到。

b.把这个类编译一下,确认.class文件在工程的WEB-INF/classes/filters文件夹下存在。

c.重新启动Tomcat。这个警告没有了!!!

3.致命的: フィルタ struts2 の起動中の例外です

Dispatcher initialization failed
java.lang.RuntimeException: java.lang.RuntimeException: com.opensymphony.xwork2.inject.DependencyException: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=java.lang.String, name='actionPackages'] in public void org.apache.struts2.config.ClasspathPackageProvider.setActionPackages(java.lang.String).

这个其实还是不太明白是什么原因。看这段话,说是不能初始化。经过摸索有两种解决的办法,但是原理是什么至今没明白。先把办法写出来,给大家参考一下。

解决方法1:(包配置问题)

a.在/WEB-INF/lib中导入如下几个包。(如果需要别的包当然可以再导入)可能是由于struts2-codebehind-plugin-2.1.8.1.jar这个包

的原因,因为删除了它之后,我的错误就解决了。

commons-fileupload-1.2.1.jar

commons-io-1.3.2.jar

commons-logging-1.0.4.jar

freemarker-2.3.15.jar

ognl-2.7.3.jar

struts2-convention-plugin-2.1.8.1.jar

struts2-core-2.1.8.1.jar

xwork-core-2.1.6.jar

解决方法2: (配置文件web.xml)

a.在不删掉struts2-codebehind-plugin-2.1.8.1.jar这个包的时候,我在web.xml的<filter></filter>中加了如下配置后,问题也解决

了。

<init-param>
<param-name>actionPackages</param-name>
<param-value>abc</param-value>
</init-param>

总结:使用struts2-codebehind-plugin-2.1.8.1.jar这个包可能就需要在配置文件中给出初始化的参数。从而初始化这个包中的org.apache.struts2.config.ClasspathPackageProvider.setActionPackages这个属性。如果没给这个参数,就会发生这种无法初始化的错误。但是这个包到底是干什么用的,我现在还不知道,随着学习的深入也许会慢慢了解,也希望,知道的朋友能够给予说明,大家一起来丰富这篇博文。

4.Dispatcher initialization failed
Unable to load configuration. - bean - jar:file:/C:/Documents%20and%20Settings/abc/workspace/struts2/WEB-INF/lib/struts2-core-2.1.8.1.jar!/struts-default.xml:29:72

.....

Error filterStart

这个问题是因为在Tomcat 的lib文件夹里拷贝了struts2-core-2.1.8.1.jar这个包造成的。

解决方法:

a.把Tomcat 的lib文件夹里struts2-core-2.1.8.1.jar包删除。

总结:不在Tomcat的lib文件夹里放struts2的任何.jar文件,而是把这些需要的.jar文件导入创建的工程的WEB-INF文件夹下的lib文件夹中(import)。

如果你的工程出现HTTP 404 错误的话,建议先看看Tomcat是不是出了什么错,把这些错误解决了,也许讨厌的404错误就自然死亡了,(本人的经验)。祝大家好运。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: