原来用的struts2.0版本,运行项目没有问题。后来换了struts2.2.1版本后,只要访问Action,都会出现
java.lang.NoSuchMethodException: com.struts.action.UserAction.create()类似的错误,就是说Action中找不到create这个方法。
struts.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
-
"http://struts.apache.org/dtds/struts-2.0.dtd">
-
<struts>
-
<include file="defaults.xml"></include>
-
<package name="struts.action.user" namespace="/user" extends="struts-default">
-
<interceptors>
-
<interceptor name="loginInterceptor" class="com.innoact.struts.interceptor.LoginInterceptor">
-
</interceptor>
-
</interceptors>
-
<action name="user_*" class="com.innoact.struts.action.UserAction" method="{1}">
-
<interceptor-ref name="loginInterceptor">
-
<param name="excludeMethods">login,register</param>
-
<param name="includeMethods">update</param>
-
</interceptor-ref>
-
<interceptor-ref name="defaultStack"></interceptor-ref>
-
<result name="success">/main.jsp</result>
-
<result name="login">/index.jsp</result>
-
</action>
-
</package>
-
-
</struts>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="defaults.xml"></include>
<package name="struts.action.user" namespace="/user" extends="struts-default">
<interceptors>
<interceptor name="loginInterceptor" class="com.innoact.struts.interceptor.LoginInterceptor">
</interceptor>
</interceptors>
<action name="user_*" class="com.innoact.struts.action.UserAction" method="{1}">
<interceptor-ref name="loginInterceptor">
<param name="excludeMethods">login,register</param>
<param name="includeMethods">update</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="success">/main.jsp</result>
<result name="login">/index.jsp</result>
</action>
</package>
</struts>
我设定的是方法拦截,所以当进入user_update.action的时候,没有问题,因为它可以进入拦截器。但是我没有拦截login和register方法,进入这两个方法时就会出错。说找不到create方法。我Action里面没有这个方法,肯定找不到。而且继承的ActionSupport的里面也没有这个方法,只有excute方法。不知道为什么struts会非要找这个create方法!后来上网查了半天,人家说去掉<include file="defaults.xml"></include>这部分就可以。
defaults.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
-
"http://struts.apache.org/dtds/struts-2.0.dtd">
-
<struts>
-
<package name="defaults" extends="struts-default">
-
<global-results>
-
<result name="error">/error.jsp</result>
-
</global-results>
-
-
<global-exception-mappings>
-
<exception-mapping exception="java.lang.NullPointerException" result="error" />
-
<exception-mapping exception="java.lang.Exception" result="error" />
-
</global-exception-mappings>
-
</package>
-
</struts>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="defaults" extends="struts-default">
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.NullPointerException" result="error" />
<exception-mapping exception="java.lang.Exception" result="error" />
</global-exception-mappings>
</package>
</struts>
试了下,果然奏效。但是用原来struts2.0的版本没有这样的问题啊!不知道为什么,哪位高人来解释下,感激不尽!最好能带 struts的源代码分析下!还有struts2.0和2.1之后的地方,有哪些区别?
Oh My God!现在又不行了。不知道是不是我刚才手动加的create方法没去掉,现在又报这个错误,蛋疼啊!高手速来解答!感激不尽啊!
------------------------------------------------------------------------------------------------------------------
问题补充:songfantasy 写道
你的类编译的有问题吧,怎么会找create这个方法呢?
那我手动加个create方法就OK,应该不会错的吧?
分享到:
相关推荐
在Java编程中,`java.lang.NoSuchMethodException` 是一个常见的运行时异常,它表示尝试调用一个不存在的方法。这个异常通常发生在动态方法调用或反射操作中。在给出的标题 "java.lang.NoSuchMethodException: ....
Java中的`java.lang.NoSuchMethodException`异常通常表明在运行时尝试调用一个不存在的方法。这个错误通常发生在动态代理、反射或者其他需要在运行时查找或调用特定方法的场景。在这个特定的问题中,错误提示是`java...
在Java编程中,`NoSuchMethodException` 是一个常见的运行时异常,它发生在尝试调用一个不存在的方法时。这个异常属于`java.lang`包,通常在动态方法调用或反射操作时抛出。当我们试图通过对象实例或类来执行一个在...
在Java编程中,`java.lang.NoSuchMethodException`异常通常表明在运行时尝试调用一个不存在的方法。这个错误在上传文件时出现,可能是由于在控制器方法的签名与前端发送请求时的参数不匹配导致的。在描述中提到的...
在Java编程中,`java.lang.NoSuchFieldException`是运行时异常的一种,通常发生在尝试访问或操作一个类的字段,但该字段在指定的类或其任何超类中不存在时。这个异常表明在编译期间可能存在的字段在运行时无法找到,...
MyBatis-通用Mapper通过逆向工程(Reverse Engineering)和代码生成工具,能够自动生成与数据库表相关的Java实体类、Mapper接口和Mapper XML配置文件,极大地提高了开发效率。下面我们将深入探讨这个工具的使用和...
2. **java.lang.ClassNotFoundException**: 当Java虚拟机试图加载某个类,但在类路径中找不到对应的类文件时,将抛出此异常。确保类名、包名以及类路径设置正确,特别是从JAR文件或网络加载类时。 3. **java.lang...
2. **java.lang.ClassNotFoundException**: 当尝试加载一个类,但JVM无法找到指定的类定义时,会抛出此异常。这可能是因为类路径设置不正确或者类的名称有误。确保类名与源代码和编译后的文件名匹配,并且类路径包含...
然而,当开发者尝试使用反射调用一个不存在的方法时,便会遇到`java.lang.NoSuchMethodException`异常。本文将深入探讨此异常,特别是它在服务器端Java应用中的常见场景——例如Struts框架——并提供详细的解决方案...
java.lang.UnsupportedClassVersionError 是一种不支持的类版本错误,指的是在程序中 Java 虚拟机试图从读取某个类文件,但是发现该文件的主、次版本号不被当前 Java 虚拟机支持的时候,抛出的异常。 33. java.lang...
2. **`java.lang.ClassNotFoundException`**:当尝试加载指定的类时,如果找不到该类的定义,就会抛出此异常。确保类名、路径和类加载器配置正确。 3. **`java.lang.ArithmeticException`**:执行非法数学运算时抛...
2. **`java.lang.ClassNotFoundException`**:找不到类异常。当JVM尝试加载一个类,但在类路径中找不到对应的.class文件时,会抛出此异常。确保类名正确无误,并且类所在的jar文件或目录已被包含在类路径中。 3. **...
- **`java.lang.NoSuchMethodException`**:方法未找到异常。 #### 三、总结 异常处理对于编写健壮和可靠的Java应用程序至关重要。理解不同类型的异常及其触发条件可以帮助开发者更好地设计和维护代码。此外,...
2. **java.lang.ClassNotFoundException**: 这个异常通常发生在尝试加载一个不存在的类时。可能是由于类路径设置错误,或者类名拼写不正确。确保类的完整限定名(包括包名)正确,并且类的`.class`文件位于正确的...
2. **java.lang.ClassNotFoundException**: 当尝试加载一个不存在或者路径不正确的类时,会抛出此异常。解决方法是确认类名是否正确,类路径是否包含该类的.jar文件或目录,以及在不同开发环境(如JBuilder和WTK)...
2. **`java.lang.ClassNotFoundException`**: 这个异常通常发生在尝试加载一个不存在的类时。确保类路径设置正确,类名无误,并且与源代码或JAR文件中的类名匹配。在部署应用程序时,也要注意开发环境和生产环境...
免费的库存管理软件,很好用的org.springframework.beans.... nested exception is java.lang.NoSuchMethodException: java.io.File.()] with root cause java.lang.NoSuchMethodException: java.io.File.
2. java.lang.ClassNotFoundException java.lang.ClassNotFoundException 是一种常见的错误,发生在指定的类不存在时。例如,在将 JB 下的程序包放在 WTK 下编译时,如果类的名称和路径不正确,就会出现该错误。...
- **`java.lang.NoSuchMethodException`**:当反射调用不存在的方法时抛出。 ### 运行时异常 除了上述提到的检查性异常之外,还有一些不需显式捕获的运行时异常,例如: - **`java.lang.AssertionError`**:断言...