找不到方法的异常: java.lang.NoSuchMethodException: No applicable method found

文章详细介绍了如何解决SQLtrace中出现的找不到调用的Java方法的bug,通过对比数据库文件版本和AppCheck版本,发现版本不一致导致方法未正确调用。提供了重新编译Java文件或通过特定数据库命令使数据库重新编译Java文件以保持与AppCheck版本一致的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个异常出现在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 文件将会重新编译, 以保持一致.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值