将EAR部署到JBoss AS7时出现TLD解析错误

时间:2011-11-22 12:35:11

标签: java java-ee jboss7.x

我正在尝试在JBoss AS7上部署一个运行在Websphere6.1上的EAR,但是我收到了这个错误:

Caused by: java.lang.IllegalArgumentException: No enum const class org.jboss.metadata.web.spec.BodyContentType.None
        at java.lang.Enum.valueOf(Unknown Source) [:1.6.0_29]
        at or.jboss.metadata.web.spec.BodyContentType.valueOf(BodyContentType.java:30)
        at org.jboss.metadata.parser.jsp.TagMetaDataParser.parse(TagMetaDataParser.java:117)
        at org.jboss.metadata.parser.jsp.TldMetaDataParser.parse(TldMetaDataParser.java:226)
        at org.jboss.as.web.deployment.TldParsingDeploymentProcessor.parseTLD(TldParsingDeploymentProcessor.java:124)
        at org.jboss.as.web.deployment.TldParsingDeploymentProcessor.processTlds(TldParsingDeploymentProcessor.java:105)
        at org.jboss.as.web.deployment.TldParsingDeploymentProcessor.deploy(TldParsingDeploymentProcessor.java:81)
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:115) [jboss-as-server-7.0.2.Final.jar:7.0.2.Final]
        ... 5 more

我无法判断它正在尝试解析哪个.tld文件,但是我查看了WAR中的.tld文件,而指定<body-content>标记的文件是<body-content>scriptless</body-content>。所有.tld文件都有此doctype:

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

有没有人遇到过这个或类似的问题?

[编辑]

我已经为tld文件中的每个标记添加了<body-content>标记,但我仍然收到此错误 - 所以我猜它正在尝试解析其他一些.tld ...

...并从EAR中删除所有.tld文件会得到相同的结果。

2 个答案:

答案 0 :(得分:3)

检查spring-modules-validation-0.8.jar。 META-INF / valang.tld包含无效的正文内容值。

即, <body-content>None</body-content>其中值“None”无效。将此值替换为“empty”。

所以正确的标签是 <body-content>empty</body-content>

Jboss-7.x不会部署捆绑SpringModules库的应用程序,其中包含不正确的文件(SPRINGMODULES-13)。

答案 1 :(得分:1)

WEB-INF lib文件夹中的一个jar(你知道你是谁,spring-modules-validation.jar v.0.9)有一个.tld,为<body-content>None</body-content>指定org.springmodules.validation.valang.javascript.taglib.ValangCodebaseTag