我正在尝试部署一个在 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 taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
有人遇到过这个或类似的问题吗?
[编辑]
我添加了 <body-content>
标记到 tld 文件中的每个标记,但我仍然收到此错误 - 所以我猜它正在尝试解析其他一些 .tld ...
...并从 EAR 中删除所有 .tld 文件会产生相同的结果。
最佳答案
检查是否有spring-modules-validation-0.8.jar。 META-INF/valang.tld 包含无效的正文内容值。
即,
<body-content>None</body-content>
其中值“None”无效。将此值替换为“空”。
所以正确的标签是
<body-content>empty</body-content>
Jboss-7.x 不会部署捆绑 SpringModules 库的应用程序,其中包含此不正确的文件 (SPRINGMODULES-13)。
关于java - 将 EAR 部署到 JBoss AS7 时出现 TLD 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8226916/