org.apache.xalan.processor.transformerfactoryImpl not found问题
这个例子来自夏昕的《Spring开发指南》,虽然给出了详细的代码,可能是因为开发环境的差异却频频抛出异常。其中最重要的异常就是apache.xalan.processor.transformerfactoryImpl not found。经过一番奋战终于解决了这个问题。
1、开发环境
JDK1.5、Tomcat 5.0.30、MyEclipse_55.1GA_E_FullStackInstaller。
2、index.jsp
<%
...
@ page pageEncoding="utf-8"
%>

<%
...
@ taglib prefix="ww" uri="webwork"
%>
<
html
>
<
body
>
<
form
action
="login.action"
>
<
p
align
="center"
>
登录
<
br
>
<
ww:if
test
="errorMessage != null"
>
<
font
color
="red"
>
<
ww:property
value
="errorMessage"
/>
</
font
>
</
ww:if
>
</
p
>
用户名:
<
input
type
="text"
name
="model.username"
/>
<
br
>
密 码 :
<
input
type
="password"
name
="model.password"
/>
<
br
>
<
p
align
="center"
>
<
input
type
="submit"
value
="提交"
name
="B1"
/>
<
input
type
="reset"
value
="重置"
name
="B2"
/>
</
p
>
</
form
>
</
body
>
</
html
>
3、main.jsp
<%
...
@ taglib prefix="ww" uri="webwork"
%>
<
html
>
<
body
>
<
p
align
="center"
>
Login Success!
</
p
>
<
p
align
="center"
>
Welcome!
<
ww:property
value
="#session['username']"
/>
</
p
>
<
p
align
="center"
>
<
b
>
Messages:
</
b
><
br
>
<
ww:iterator
value
="messages"
status
="index"
>
<
ww:if
test
="#index.odd==true"
>
!
<
ww:property
/><
br
>
</
ww:if
>
<
ww:else
>
*
<
ww:property
/><
br
>
</
ww:else
>
</
ww:iterator
>
</
p
>
</
body
>
</
html
>
4、web.xml
<?
xml version="1.0" encoding="UTF-8"
?>
<
web-app
version
="2.4"
xmlns
="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
<
servlet
>
<
servlet-name
>
webwork
</
servlet-name
>
<
servlet-class
>
com.opensymphony.webwork.dispatcher.ServletDispatcher
</
servlet-class
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>
webwork
</
servlet-name
>
<
url-pattern
>
*.action
</
url-pattern
>
</
servlet-mapping
>
<
servlet
>
<
servlet-name
>
velocity
</
servlet-name
>
<
servlet-class
>
com.opensymphony.webwork.views.velocity.WebWorkVelocityServlet
</
servlet-class
>
<
load-on-startup
>
1
</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>
velocity
</
servlet-name
>
<
url-pattern
>
*.vm
</
url-pattern
>
</
servlet-mapping
>
<
welcome-file-list
>
<
welcome-file
>
index.jsp
</
welcome-file
>
</
welcome-file-list
>
</
web-app
>
5、xwork.xml
<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "xwork-1.0.dtd"
>
<
xwork
>
<
include
file
="webwork-default.xml"
></
include
>
<
package
name
="default"
extends
="webwork-default"
>
<
action
name
="login"
class
="com.spring.LoginAction"
>
<
result
name
="success"
type
="dispatcher"
>
<
param
name
="location"
>
/main.jsp
</
param
>
</
result
>
<
result
name
="loginfail"
type
="dispatcher"
>
<
param
name
="location"
>
/index.jsp
</
param
>
</
result
>
<
interceptor-ref
name
="params"
></
interceptor-ref
>
<
interceptor-ref
name
="model-driven"
></
interceptor-ref
>
</
action
>
</
package
>
</
xwork
>
6、LoginAction.java和LoginInfo.java
public
class
LoginAction
implements
Action , ModelDriven
...
{
private final static String LOGIN_FAIL = "loginfail";
LoginInfo loginInfo = new LoginInfo();
public Object getModel() ...{
return loginInfo;
}
public String execute() throws Exception ...{
if("mypass".equals(loginInfo.getPassword())&&"erica".equalsIgnoreCase(loginInfo.getUsername()))...{
ActionContext ctx = ActionContext.getContext();
Map session = ctx.getSession();
session.put("username", loginInfo.getUsername());
loginInfo.getMessages().add("message1");
loginInfo.getMessages().add("message2");
loginInfo.getMessages().add("message3");
return SUCCESS;
}else...{
loginInfo.setErrorMessage("Username/Password Error!");
return LOGIN_FAIL;
}
}
}


public
class
LoginInfo
...
{
private String password;
private String username;
private List messages = new ArrayList();
private String errorMessage;
...
}
7、webwork.properties
如果不加上这个文件,在偶的环境中就会报找不到该文件的异常,因此我就到webwork的jar包里找到default.properties,改一下名字就可以了。
8、目录结构
|__src
| |_com.spring
| |_LoginAction.java
| |_LoginInfo.java
|_WebRoot
|_META-INF
|_WEB-INF
| |_lib
| |_classes
| | |_webwork.properties
| | |_xwork.xml
| | |_com.spring
| | |_LoginAction.class和LoginInfo.class
| |_web.xml
|_index.jsp
|_main.jsp
9、测试
按照上面的步骤,运行会报org.apache.xalan.processor.transformerfactoryImpl not found的异常,从网上下载xalan-j_2_7_0-bin-2jars包,把包内的几个jar文件都拷贝到项目的lib中,实际上还要把其中的xml-apis.jar和xercesImpl.jar覆盖掉Tomcat安装目录下的common/endorsed下的两个文件。之所以要覆盖掉是因为Tomcat的版本太低的缘故。
本文介绍了解决使用WebWork框架时遇到的org.apache.xalan.processor.transformerfactoryImplnotfound异常的方法,包括开发环境配置、关键文件内容及所需依赖。
831

被折叠的 条评论
为什么被折叠?



