ORA-29531:类中没有方法错误 [英] ORA-29531: no method in class error
问题描述
我尝试在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屋!