db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stanley Bradbury <Stan.Bradb...@gmail.com>
Subject Re: function in derby[beginner]
Date Wed, 04 Apr 2007 00:05:56 GMT
Tony Winslow wrote:
> I have this class:
> public class Say {
>    public static int say(int i) {
>      System.out.println ("* Say: " + i);
>      return i;
>    }
>
>   public static int say2(String msg) {
>         System.out.println("** " + msg);
>         return 1;
>   }
>
> }
>
>  
> and I created a function in Derby:
> create function say2(msg varchar(50)) returns integer
> parameter style java no sql language java
> external name ' Say.say2';
>
> but when I want to use it, error occurs:
> ERROR 42X50: No method was found that matched the method call
> Say.say2(java.lang
> .String), tried all combinations of object and primitive types and any
> possible
> type conversion for any  parameters the method call may have. The
> method might e
> xist but it is not public and/or static, or the parameter types are
> not method i
> nvocation convertible.
>
> And I created another function:
> create function say(i integer) returns integer
> parameter style java no sql language java
> external name 'Say.say';
>
> It works fine.
>
> I've tried hard to figure it out but failed. Can anybody help me?
>
> Thank you in advance!!!
>
Hi Tony -

At first I thought your classpath might not be setup correctly but since 
Say.say executes I assume the jarfile was loaded and added to the 
classpath.  Some things you might check:

- There is a leading space in your 'external name' declaration. 
external name ' Say.say2';
Try dropping and redeclaring the function without the leading space.

- Check to be sure that the jarfile that got loaded into the database 
has both classes in it.  You can find it (renamed) under the JAR folder 
of the database.


Mime
View raw message