I already figured it out.
With this snippet it is working:
private static final JexlEngine ENGINE;
static {
Map<String, Object> fnc = new HashMap<>();
fnc.put("math", Math.class);
ENGINE = new
JexlBuilder().namespaces(fnc).cache(512).strict(true).silent(false).create();
}
And BTW, You are not importing anything from java.lang. It is already there by
default.
Gary Greenberg
Staff Software Engineer
Data Product Development, BI-A
E: [email protected]
M: 650-269-7902
-----Original Message-----
From: Joakim Knudsen <[email protected]>
Sent: Sunday, April 19, 2020 9:38 PM
To: Commons Users List <[email protected]>
Subject: Re: [jexl] How to use math functions with JEXL
Hi,
Did you import the Math library?
import java.lang.Math;
Joakim
søn. 19. apr. 2020, 07:21 skrev Greenberg, Gary <[email protected]>:
> I am trying to evaluate an expression that beside simple arithmetic
> need to calculate square root.
>
> I tried sqrt(), Math.sqrt() and java.lang.Math.sqrt and nothing works
>
> I am always getting something like @1:1 undefined variable java.lang.Math.
>
> I did use before expr4j and it has all these functions built-in.
>
> Switched to JEXL, because need not only numeric, but also Boolean
> expressions.
>
> Can you also confirm if this type of expressions will work:
>
> a.equalsIgnoreCase(“XYZ”) && b.startWith(“http”)
>
> where a and b are variables in the JexlContext.
>
>
>
> Gary Greenberg
>
> Staff Software Engineer
>
> Data Product Development, BI-A
>
> E: [email protected]
>
> M: 650-269-7902
>
>
>
> [image: EmailSig-TaglineVersion]
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]