We are pleased to announce the availability of Servoy 2025.06.0 (release number 4082)
This version is available through the download site
See whats new for the global changes and the case list
An installation (coming from the normal installer or from a platform specific archive) is shipping with a Java VM (Java 21.0.7)
So for the platform specific archives you don’t need to install or have java on your system.
This release can be updated by using the “latest” url: http://download.servoy.com/developer/latest/ (when you come from 2019.03 or higher)
This release is build on Eclipse 2025.03 (4.35)
This is a release in our quarterly release cycle
if you want to stay on the LTS path you need to stick to 2024.03.4 LTS and enabled only the lts update site. (25.03.2 LTS will be released in the coming weeks)
Many webpackages have new releases (or will have) for the 2025.06 but only NGGrids is mandatory.
If coming from a much older release like 2022.03 then you first have to updated to 2023.03 and then go to 2024.12
This is because of an Eclipse update bug that prevents these updates.
1 Like
After upgrading to 2025.6 I started receiving a lot of the following exception. Has anybody else seen this yet?
ERROR com.servoy.j2db.util.Debug - Non-terminating decimal expansion; no exact representable decimal result. (Form Context: opp_detail_content2), JSEvent(type = form, source = FormController[...], formName = opp_detail_content2, elementName = <no name>, timestamp = Tue Jul 01 09:22:18 CDT 2025,modifiers = 0,x =0,y = 0,data = null) java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.base/java.math.BigDecimal.divide(Unknown Source) ~[?:?]
at org.mozilla.javascript.ScriptRuntime.divide(ScriptRuntime.java:3448) ~[?:?]
at org.mozilla.javascript.Interpreter.doArithmetic(Interpreter.java:4014) ~[?:?]
at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1659) ~[?:?]
at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:1159) ~[?:?]
at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:87) ~[?:?]
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:347) ~[?:?]
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:4540) ~[?:?]
at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:85) ~[?:?]
at com.servoy.j2db.scripting.ScriptEngine.executeFunction(ScriptEngine.java:749) ~[?:?]
at com.servoy.j2db.debug.RemoteDebugScriptEngine.executeFunction(RemoteDebugScriptEngine.java:386) ~[?:?]
at com.servoy.j2db.BasicFormController.executeFunction(BasicFormController.java:1200) ~[?:?]
at com.servoy.j2db.BasicFormController.executeFormMethod(BasicFormController.java:909) ~[?:?]
at com.servoy.j2db.BasicFormController.executeOnShowMethod(BasicFormController.java:740) ~[?:?]
at com.servoy.j2db.BasicFormController$1.run(BasicFormController.java:410) ~[?:?]
at org.sablo.eventthread.Event$1.run(Event.java:97) ~[?:?]
at org.sablo.websocket.CurrentWindow.runForWindow(CurrentWindow.java:80) ~[?:?]
at org.sablo.eventthread.Event.execute(Event.java:87) ~[?:?]
at org.sablo.eventthread.EventDispatcher.dispatch(EventDispatcher.java:144) ~[?:?]
at org.sablo.eventthread.EventDispatcher.run(EventDispatcher.java:90) ~[?:?]
at com.servoy.j2db.server.ngclient.eventthread.NGEventDispatcher.run(NGEventDispatcher.java:60) ~[?:?]
at java.base/java.lang.Thread.run(Unknown Source) [?:?]
Example Code (we have multiple other places where we have to divide decimal values):
utils.numberFormat((income / balance),'#,##0.00%;(#,##0.00%)')
hmm i could reproduce this, will have a look
This is a the different way we handle internally big numbers (to keep it a big number not loosing precision). But it seems the divide of stuff doesn’t work
Good morning, with version 2025.6.0 we’re having the same problem with numerical operations, for example:
.difcot_importe = Math.round(vl_dif_cotiz_pesos / (1 + tmp_alic_iva / 100) * 100) / 100
We’re getting the error:
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
And the method doesn’t continue, the process is aborted.
Any temporary solution?
Regards
this divide problem is fixed for the 06 branch, you can download an installer from here:
Index of /latest/servoy_release/
Please next time try an RC once, this would have been an easy catch, because for some divide operations that do need a rounding mode specified this above is now a problem
I made a get request and get no response when deployed in a war file.
In the Servoy development environment it works!
It worked in Servoy 2023.12 but not in 2025.03 and 2025.6.0.4082
Here is the simple code:
var httpClient = plugins.http.createNewHttpClient();
var url = 'https://jsonplaceholder.typicode.com/posts/1';
var request = httpClient.createGetRequest(url);
request.addHeader('accept', 'application/json');
var response = request.executeRequest(); // here it hangs without exception or other message
var statusCode = response.getStatusCode();
var body = response.getResponseBody();
Reply
can you try with forcing http1 mode?
HttpClientConfig | Docs
it is a bit weird that it works in developer but not deployed. there shouldn’t be any difference.
This makes no difference I also tested with
config.forceHttp1 = true; // force HTTP/1.1, because its not working in deployed version
config.hostValidation = false; // disable host validation for testing purposes
config.trustStorePassword = true;
And it worked in Version 2023.12 - But I will test now also with LTS version 2024.03.6(3949).
It also work with LTS version 2024.03.6.
Now I compared the war files and search for http*.jar files. There I found only one file in the new version - http.jar and in the LTS version http.jar, httpclient.jar and httpcore.jar.
When I replaced and added this files from the LTS war file to the new one and deployed that it works!
Means there is an error in the new http plugin or something missing!
that is really weird i have no idea how that is possible
if i export a WAR from my 25.06 developer, even when i deselect all plugins (so the http plugin itself is not exported)
i still get:
those inside the WAR (WEB-INF/lib)
I got those too:
But in the LTS I got 2 more:
Ok - I did another test on another machine with current tomcat and java version
java.version=21.0.2
and here it works.
On the machine with the problems I have the java version
java.version=24.0.1
if i run my 25.06 developer with:
java.vendor=Eclipse Adoptium
java.vendor.url=https://adoptium.net/
java.vendor.url.bug=GitHub · Where software is built
java.vendor.version=Temurin-24.0.1+9
java.version=24.0.1
java.version.date=2025-04-15
and then do the export it still works fine.
But what are you testing? developer running java 24 or are you using the same WAR but then on a different tomcat? (then the httpclient jars don’t change those are still in the WAR or not)
If you are just testing on a different tomcat/java version with the same WAR then the WAR is just fine (the httpclient/httpcore jars are just in there)
Now I just updated/switched to java 24.0.1 and it does not work any more.
java version “24.0.1” 2025-04-15
Java™ SE Runtime Environment (build 24.0.1+9-30)
Java HotSpot™ 64-Bit Server VM (build 24.0.1+9-30, mixed mode, sharing)
from oracle
But what did you switch?
running tomcat?
or running the developer?
i got something reproduced even in developer when running java 24
For some reason the apache httpclient doesn’t resolve the async call that we do when running java 24
I switched it in tomcat.
And in developer I used:
java.version=21.0.7
That’s why it worked Developer I guess.
Can I change the java version in Servoy developer.
was finally able to find the cause and fixed it for this case:
i wondered why that suddenly was in Java 24 that it kept reading that we didn’t expect but it seems that was this change in the JDK of java:
7036144: GZIPInputStream readTrailer uses faulty available() test for… · openjdk/jdk@d3f3011
they removed an if where i think we kind of relied on so it doesn’t continue to read..
I am attempting to use the new enabledDataProvider property on a Button and it isn’t working. I tried to set the visibleDataProvider and this one does work, using the same variable I want to use to enable/disable. The button is on a responsive form.
Has anybody else used the enableDataProvider on a button that is on a responsive form yet?

