Sim, você precisa chamar um método estático, mas dentro do método estático você pode criar uma instância da classe e chamar métodos não estáticos:
create or replace java source named "com.test.Example" AS
public class Example {
public String getHelloWorld(
final String hello
) {
return hello + "world"
}
public static String getStaticHelloWorld(
final String hello;
){
final Example e = new Example();
return e.getHelloWorld( hello );
}
}
/
CREATE FUNCTION get_hello_world(i_string VARCHAR2) RETURN VARCHAR2 AS
LANGUAGE java name 'com.test.Example.getStaticHelloWorld(
java.lang.String
) return java.lang.String';