ORA-29531:类中没有方法错误 [英] ORA-29531: no method in class error

查看:417
本文介绍了ORA-29531:类中没有方法错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试在PL/SQl中编写Wrapper函数,以调用org.apache.commons.codec.language.colognephonetic类的编码函数,如官方apache commons Wiki所述. 科隆注音Apache

I try to write an Wrapper function in PL/SQl to call the encode function of the org.apache.commons.codec.language.colognephonetic Class, as described on official apache commons wiki. Cologne Phonetic Apache

包装器功能如下:

  function get_phonetic_string(i_string VARCHAR2) RETURN VARCHAR2 AS LANGUAGE java name 'org.apache.commons.codec.language.ColognePhonetic.encode(
                                          java.lang.String
                                          ) return java.lang.String';

但是,当我执行包装函数时,出现以下错误: ORA-29531:在org/apache/commons/codec/language/ColognePhonetic 类中没有编码的方法.但是显然有一个编码功能.

But, when I execute my wrapper function, I got following error: ORA-29531: no method encode in class org/apache/commons/codec/language/ColognePhonetic. But obviously there is a encode function.

有人可以帮我弄清楚我在做什么错吗?

Could someone help me to figure out what I'm doing wrong?

推荐答案

首先,确保org.apache.commons.codec.language.ColognePhonetic类在数据库中(可能不会).

First, make sure the org.apache.commons.codec.language.ColognePhonetic class is in the database (it probably will not be).

SELECT *
FROM   ALL_OBJECTS
WHERE  OBJECT_TYPE LIKE '%JAVA%'
AND    LOWER( OBJECT_NAME ) LIKE '%colognephonetic%';

如果存在则应返回一行(可能需要以特权用户身份运行).

Should return a row if it exists (may need to be run as a privileged user).

如果它不存在,则需要使用loadjava应用程序加载包含类的jar库.

If it does not exist then you will need to use the loadjava application to load the jar library containing the classes.

然后编写一个包装器以创建一个静态函数,该函数使该类的实例( unested ):

Then write a wrapper to create a static function that makes an instance of the class (untested):

CREATE JAVA SOURCE NAMED Phonetics AS
import org.apache.commons.codec.language.ColognePhonetic;

public class Phonetics {
  public static String encode(
    final String text
  ){
    final ColognePhonetic cp = new ColognePhonetic();
    return cp.encode( text );
  }
}
/

CREATE FUNCTION get_phonetic_string(i_string VARCHAR2) RETURN VARCHAR2 AS
  LANGUAGE JAVA NAME 'Phonetics.encode( java.lang.String ) return java.lang.String';

这篇关于ORA-29531:类中没有方法错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆