1

Struts 2 Annotations 不适用于 Java 8。

我有以下适用于 Java 7 的示例,但在 Java 8 中给出了错误。

我猜这些错误与库和 Java 8 有关。

有人有这个问题吗??如果是这样我们怎么解决???

我正在使用带有 Java 8 和 Apache Tomcat 8 的 struts 2.3.15.1。

这个例子在 Java 7、struts 2.3.15.1 和 Apache Tomcat 8 上都能成功运行。我刚刚测试了两者。

当我使用 Java 8 时,它会出现以下错误:

> HTTP Status 404 - There is no Action mapped for namespace [/] and
> action name [test] associated with context path [/s2demo].

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">

    <listener>
        <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
    </listener>   

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

测试动作.java

package action;

import org.apache.struts2.convention.annotation.Result;


@Result( name="success", location="/test.jsp")
public class TestAction {


     public String execute() {
         return "success";
     }
}

测试.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Test Successful!</h1>
    </body>
</html>

该项目中包含的库是:

asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-beanutils-1.8.0.jar
commons-digester-2.0.jar
commons-fileupload-1.3.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
commons-logging-1.1.3.jar
files.txt
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
log4j-1.2.17.jar
ognl-3.0.6.jar
struts2-convention-plugin-2.3.15.1.jar
struts2-core-2.3.15.1.jar
struts2-tiles-plugin-2.3.15.1.jar
tiles-api-2.0.6.jar
tiles-compat-3.0.1.jar
tiles-core-2.0.6.jar
tiles-jsp-2.0.6.jar
tiles-servlet-3.0.1.jar
xwork-core-2.3.15.1.jar
4

1 回答 1

1

根据 Struts 2 维护者 Lukas Lenart 的说法,

S2 与 JDK8 不兼容,它适用于 S2.5

这是 2014 年 6 月 18 日在 Struts 2 邮件列表 (struts-user) 上声明的。请参阅http://mail-archives.apache.org/mod_mbox/struts-user/201406.mbox/ajax/%3CCAMopvkN0MKKt%2BPs3Cv8gjTDO4X6MjnxFV3GFs8wsqUuNxOtrkQ%40mail.gmail.com%3E

于 2014-07-14T15:13:23.463 回答