qexo-general
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qexo-general] Invoking a Java Method


From: Eric Safern
Subject: [Qexo-general] Invoking a Java Method
Date: Sun, 22 Dec 2002 23:34:43 -0800

Hi,

        I'm trying to call a Java method, specifically
java.util.Random.nextInt(int n),

Here's some source code:

$ cat q.xql
declare namespace Random = "class:java.util.Random"

let
        $rnd := Random:nextInt(613)
  return ($rnd)
$

        In order to invoke Java methods, I compiled the
latest build from cvs, 1.6.99 on my Mandrake Linux box.

Here's the error message:
$ java -jar ~/work/kawa/kawa-1.6.99.jar --xquery ./q.xql
Argument  to 'java.util.Random.nextInt' has wrong type
        at gnu.expr.GenericProc.applyN(GenericProc.java:72)
        at gnu.kawa.reflect.Invoke.applyN(Invoke.java:150)
        at gnu.kawa.reflect.Invoke.applyN(Invoke.java:50)
        at gnu.mapping.ProcedureN.apply3(ProcedureN.java:46)
        at atInteractiveLevel.apply(Unknown Source)
        at gnu.mapping.CallContext.runUntilDone(CallContext.java:239)
        at gnu.expr.ModuleExp.evalModule(ModuleExp.java:188)
        at kawa.Shell.run(Shell.java:232)
        at kawa.standard.load.loadSource(load.java:134)
        at kawa.standard.load.apply(load.java:239)
        at kawa.Shell.runFile(Shell.java:295)
        at kawa.repl.main(repl.java:603)

$

A slightly different source code produces a different message:

$cat q2.xql
declare namespace Random = "class:java.util.Random"

define function Rand ($mx) { Random:nextInt($mx) }

let
        $rnd := Rand(613)
  return ($rnd)

$ java -jar ~/work/kawa/kawa-1.6.99.jar --xquery ./q2.xql
Argument #0 to 'java.util.Random.nextInt()' has wrong type (gnu.math.IntNum)
        at gnu.mapping.WrongType.make(WrongType.java:56)
        at atInteractiveLevel.Rand$T(Unknown Source)
        at atInteractiveLevel.apply(Unknown Source)
        at gnu.mapping.CpsMethodProc.apply(CpsMethodProc.java:49)
        at gnu.mapping.CallContext.runUntilDone(CallContext.java:239)
        at gnu.mapping.CallContext.runUntilValue(CallContext.java:253)
        at gnu.mapping.CpsProcedure.applyV(CpsProcedure.java:49)
        at gnu.mapping.CpsProcedure.applyN(CpsProcedure.java:25)
        at gnu.mapping.ProcedureN.apply1(ProcedureN.java:29)
        at atInteractiveLevel.apply(Unknown Source)
        at gnu.mapping.CallContext.runUntilDone(CallContext.java:239)
        at gnu.expr.ModuleExp.evalModule(ModuleExp.java:188)
        at kawa.Shell.run(Shell.java:232)
        at kawa.standard.load.loadSource(load.java:134)
        at kawa.standard.load.apply(load.java:239)
        at kawa.Shell.runFile(Shell.java:295)
        at kawa.repl.main(repl.java:603)
Caused by: java.lang.ClassCastException: gnu.math.IntNum
        ... 16 more
$

If it matters,

$ java -version
java version "1.4.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-b92)
Java HotSpot(TM) Client VM (build 1.4.0-b92, mixed mode)
$ uname -rs
Linux 2.4.18-6mdksmp
$

Alternatively, can anyone suggest an easy way to generate a
pseudo-random number in the range [1-x]?

I'm trying to implement a fortune(6) as a sample xquery app.


Thanks,

Eric Safern





reply via email to

[Prev in Thread] Current Thread [Next in Thread]