`
isiqi
  • 浏览: 16631615 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

ssh java.lang.NoSuchMethodException: $Proxy

阅读更多

首先我保证了在没加AOP实现之前,代码是能正常运行的.
然后学习SSH使用AOP在action的方法前添加权限控制,该文就是记录出现的错误信息..

先说明用xml注解AOP

<aop:config proxy-target-class="true">
<aop:aspect ref="rightFilter">
<aop:before method="rightFilter" pointcut="execution(* com.exdoit.action.Main.mainPage())"></aop:before>
<aop:after method="actionAfter" pointcut="execution(* com.exdoit.action.Main.mainPage())"></aop:after>
</aop:aspect>
</aop:config>
<aop:config proxy-target-class="true">
<aop:aspect ref="rightFilter">
<aop:before method="rightFilter" pointcut="execution(* com.exdoit.action.Main.mainPage())"></aop:before>
<aop:after method="actionAfter" pointcut="execution(* com.exdoit.action.Main.mainPage())"></aop:after>
</aop:aspect>
</aop:config>

起先是使用的annotation注解,然后出问题找不到 proxy-target-class 怎么注解就转成XML了.

java.lang.NoSuchMethodException: $Proxy...
先是代理对象里找不到方法.问题是解决了.

spring中代理对象的生成方式有2种,

1:利用jdk中的proxy实现,要求我们的被代理对象必须要去实现一个代理接口,代理对象和被代理对象本质是是实现了统一接口的两个对象

2:利用cglib来实现.被代理对象不需要去实现一个代理接口,被代理类和代理类之间本质是父子类的关系

proxy-target-class="true" 是指定由cglib来实现实现代理.

解决方法(2种):

1.取消继承 com.opensymphony.xwork2.ActionSupport 放弃这种方法
2.配置文件里的 <aop:config proxy-target-class="true" >....</aop:config>
继续AOP权限控制测试又报如下错误
Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces.
没有添加 cglib.jar 的包...你说没包你就跟下面的 NoClassDefFoundError 提示一样不得了..还自己来个什么 Add CGLIB to the class...搞半天才明白是少包了.

...继续

nested exception is java.lang.NoClassDefFoundError : Could not initialize class...

根据提示找包就是了.简单的问题.

运行结果是 AOP 拦截成功实现,但是action的变量没有输出结果...
如 public String nextPath;直接使用public声明取不到值(不用AOP前是可以直接通过public声明取值的).需要为变量加一个 get 方法:
public String getNextPath(){return nextPath;}
当请求一个变量的时候,转为寻找这个变量get方法的返回值.

估计应该是AOP的动态代理机制导致公共变量在action对应的方法中修改不会被实现


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kvgnt/archive/2011/02/20/6196726.aspx

分享到:
评论
1 楼 ysq0813 2011-11-28  
我也遇到这个问题了谢谢啦

相关推荐

    java.lang.NoSuchMethodException: .getPortClassMap()

    在Java编程中,`java.lang.NoSuchMethodException` 是一个常见的运行时异常,它表示尝试调用一个不存在的方法。这个异常通常发生在动态方法调用或反射操作中。在给出的标题 "java.lang.NoSuchMethodException: ....

    java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list错误解决办法

    Java中的`java.lang.NoSuchMethodException`异常通常表明在运行时尝试调用一个不存在的方法。这个错误通常发生在动态代理、反射或者其他需要在运行时查找或调用特定方法的场景。在这个特定的问题中,错误提示是`java...

    java 请求的方法不存在(NoSuchMethodException)

    2. **类加载机制**:Java使用双亲委派模型进行类加载,理解这一机制有助于排查类找不到方法的问题。 3. **Java动态代理**:基于`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`,实现对目标对象...

    Java上传文件错误java.lang.NoSuchMethodException的解决办法

    在Java编程中,`java.lang.NoSuchMethodException`异常通常表明在运行时尝试调用一个不存在的方法。这个错误在上传文件时出现,可能是由于在控制器方法的签名与前端发送请求时的参数不匹配导致的。在描述中提到的...

    Java 异常java.lang.NoSuchFieldException解决方案

    在Java编程中,`java.lang.NoSuchFieldException`是运行时异常的一种,通常发生在尝试访问或操作一个类的字段,但该字段在指定的类或其任何超类中不存在时。这个异常表明在编译期间可能存在的字段在运行时无法找到,...

    mybatis-通用Mapper-逆向工程-代码生成工具

    MyBatis-通用Mapper通过逆向工程(Reverse Engineering)和代码生成工具,能够自动生成与数据库表相关的Java实体类、Mapper接口和Mapper XML配置文件,极大地提高了开发效率。下面我们将深入探讨这个工具的使用和...

    JAVA常见异常解析,面试用

    - **java.lang.NoSuchMethodException**:当试图调用不存在的方法时抛出。 理解并能有效地处理这些异常对于编写健壮的Java程序至关重要。Java API文档提供了每个异常的详细描述和用法,是开发者解决问题的宝贵资源...

    java常见异常.pdf

    11. **java.lang.NoSuchMethodException**: 当试图调用一个不存在的方法时,抛出此异常。检查方法名、参数列表和返回类型是否与实际方法匹配。 12. **java.lang.AbstractMethodError**: 当实现接口或继承抽象类的类...

    常见的java异常.pdf

    9. **`java.lang.NoSuchMethodException`**:当尝试调用一个不存在的方法时抛出。确保方法签名正确,类路径和类加载器设置无误。 除了上述异常,还有许多其他类型的异常,如`ClassNotFoundException`、`...

    JAVA常见的错误

    java.lang.NullPointerException 是一种常见的错误,发生在程序中调用了未经初始化的对象或不存在的对象时。例如,在创建图片或调用数组时,如果图片未经初始化或数组元素未经初始化,就会出现该错误。解决方法是...

    java 反射 报错 no such method exception

    然而,当开发者尝试使用反射调用一个不存在的方法时,便会遇到`java.lang.NoSuchMethodException`异常。本文将深入探讨此异常,特别是它在服务器端Java应用中的常见场景——例如Struts框架——并提供详细的解决方案...

    Java中常用异常列表[收集].pdf

    11. **`java.lang.NoSuchMethodException`**:方法未找到异常。当尝试调用一个不存在的方法时,会抛出此异常。检查方法名、参数类型和返回类型是否匹配。 异常处理是Java编程中不可或缺的一部分,良好的异常处理...

    java.lang.NoSuchMethodException(解决方案).md

    项目中碰到的,记录一下解决方案

    JAVA常见异常解析

    11. **java.lang.NoSuchMethodException**: 当试图调用一个不存在的方法时,会抛出此异常。检查方法名、参数列表以及类的API文档,确保方法确实存在。 12. **java.lang.AbstractMethodError**、**java.lang....

    Java的异常类

    - **`java.lang.NoSuchMethodException`**:方法未找到异常。 #### 三、总结 异常处理对于编写健壮和可靠的Java应用程序至关重要。理解不同类型的异常及其触发条件可以帮助开发者更好地设计和维护代码。此外,...

    用反射解析jar文件并执行里面Java代码

    import java.lang.reflect.Method; public class MainExecutor { public static void main(String[] args) throws Exception { String className = "com.example.YourMainClass"; Class&lt;?&gt; clazz = Class.for...

    常见异常处理方案

    12. **`java.lang.NoSuchMethodException`**: 在调用一个不存在的方法时抛出。确保方法签名正确,且类确实包含了这个方法。 了解并适当地处理这些异常可以帮助编写出更健壮、更易于维护的代码。当捕获到异常时,...

Global site tag (gtag.js) - Google Analytics