找不到方法的异常: java.lang.NoSuchMethodException: No applicable method found
2014-04-28 21:48
405 查看
这个异常出现在SQL trace 里面, 原因是调用java 代码的时候找不到方法.
遇到过一次这样的bug, 客户在升级之后, 在PO receipt 界面和Misc receipt 界面再也不能输入serial number 了. 看代码的时候, 发现本来在应该调用TrxProcessor.validateSerialNumbers 这个方法的时候没有调用. 原因就是找不到这个方法.
我们看客户的App Check, 对比了两个文件后发现, 调用的地方和这个方法的参数是一致的. 会是原因导致找不到方法呢?
通过下面的代码查到客户的数据库文件版本
set serveroutput on;
begin
fnd_aolj_util.getClassVersionfromDB('oracle.apps.inv.transaction.server.TrxProcessor');
END;
这个版本和App Check 里面的版本不一致, 而这两个版本的文件的这个方法, 参数是不一致的. 调用的时候没有找到对应参数的方法了.
这时可以重新编译这个 java 文件, 但前提是手上得有源代码. 也可以通过下面的方法让数据库重新编译java 文件, 使得与App Check 的文件版本保持一致:
1. 连接instance
2. 使用命令adadmin, 输入系统和数据库密码
3. 在 AD Administration Main Menu 上选择 [3. Compile/Reload Application Database Entities menu]
4. 选择 [4. Reload JAR files to database]
这样的话, 数据库的java 文件将会重新编译, 以保持一致.
遇到过一次这样的bug, 客户在升级之后, 在PO receipt 界面和Misc receipt 界面再也不能输入serial number 了. 看代码的时候, 发现本来在应该调用TrxProcessor.validateSerialNumbers 这个方法的时候没有调用. 原因就是找不到这个方法.
我们看客户的App Check, 对比了两个文件后发现, 调用的地方和这个方法的参数是一致的. 会是原因导致找不到方法呢?
通过下面的代码查到客户的数据库文件版本
set serveroutput on;
begin
fnd_aolj_util.getClassVersionfromDB('oracle.apps.inv.transaction.server.TrxProcessor');
END;
这个版本和App Check 里面的版本不一致, 而这两个版本的文件的这个方法, 参数是不一致的. 调用的时候没有找到对应参数的方法了.
这时可以重新编译这个 java 文件, 但前提是手上得有源代码. 也可以通过下面的方法让数据库重新编译java 文件, 使得与App Check 的文件版本保持一致:
1. 连接instance
2. 使用命令adadmin, 输入系统和数据库密码
3. 在 AD Administration Main Menu 上选择 [3. Compile/Reload Application Database Entities menu]
4. 选择 [4. Reload JAR files to database]
这样的话, 数据库的java 文件将会重新编译, 以保持一致.
相关文章推荐
- Struts2 抛 java.lang.NoSuchMethodException:(无法找到某一特定方法时,抛出该异常)
- spring No default constructor found; nested exception is java.lang.NoSuchMethodException: com.slj.mo
- spring的aop拦截action中的方法会报java.lang.NoSuchMethodException: $Proxy97.test()异常
- Caused by: java.lang.ClassNotFoundException常见异常解决方法!
- 170524、java.lang.IllegalArgumentException: No converter found for return value of type异常解决
- hibernate中异常:java.lang.ClassNotFoundException: org.hibernate.cache.internal.NoCacheProvider
- 异常 java.lang.ClassNotFoundException com.mysql.jdbc.Driver 解决方法
- java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet异常
- spring集成quartz中java.lang.ClassNotFoundException: org.quartz.impl.JobDetailImpl异常解决方法
- struts2:java.lang.NoSuchMethodException异常
- struts2的java.lang.NoSuchMethodException异常处理
- java.lang.NoSuchMethodException 异常总结
- java.lang.ClassNotFoundException: package com.xiangang.qq_client.Prototal 常见异常处理方法
- spring java.lang.IllegalArgumentException:。。。 no matching editors or conversion strategy found异常
- net.sf.json.JSONException: java.lang.NoSuchMethodException: Property 'username' has no getter method
- java.lang.NoSuchMethodException异常处理
- java.lang.NoSuchMethodException异常解决
- MapReduce错误之Error: java.lang.RuntimeException: java.lang.NoSuchMethodException的解决方法
- Rational Rose 2003破解版的下载与安装以及出现java.lang.ClassNotFoundException异常的解决方法
- MapReduce错误之Error: java.lang.RuntimeException: java.lang.NoSuchMethodException的解决方法