# Servoy 8.3.1

**URL:** <https://forum.servoy.com/t/servoy-8-3-1/19754>\
**Category:** Classic Servoy\
**Created:** [July 26, 2018, 10:59am UTC](https://forum.servoy.com/t/servoy-8-3-1/19754 "2018-07-26T10:59:54Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![jcompagner](https://yyz2.discourse-cdn.com/flex010/user_avatar/forum.servoy.com/jcompagner/32/4889_2.png) [@jcompagner](https://forum.servoy.com/u/jcompagner)\
**Post date:** [July 26, 2018, 10:59am UTC](https://forum.servoy.com/t/servoy-8-3-1/19754/1 "2018-07-26T10:59:54Z")

</div>

We are pleased to announce the availability of Servoy 8.3.1 (releasenumber 3205)

This version is available through our [download site](https://servoy.com/download)

The update site is: [http://download.servoy.com/developer/8xx\_updates/](http://download.servoy.com/developer/8xx_updates/)

There are, compared to the 8.3.1rc a few developer fixes for debugging and some NGClient fixes:

[fixes](https://wiki.servoy.com/display/DOCS/8.3.1)

see for the changes in 8.3:

[Whats new](https://wiki.servoy.com/display/DOCS/8.3+Whats+new)

fixes done in 8.3.1rc:  
[8.3.1RC fixes and feature](https://wiki.servoy.com/display/DOCS/8.3.1+RC)

Also check the new feature out for parsing/validating javascript code, we like to have that tested and looked at so we can enable that by default for 8.4

---

<div class="post-metadata">

**Author:** ![briese-it](https://avatars.discourse-cdn.com/v4/letter/b/a698b9/32.png) [@briese-it](https://forum.servoy.com/u/briese-it)\
**Post date:** [August 7, 2018, 8:58am UTC](https://forum.servoy.com/t/servoy-8-3-1/19754/2 "2018-08-07T08:58:01Z")

</div>

Since updating to 8.3.1 I have problems with formatting dates on the Application server (developer is running fine).

Code:

```auto
var fsQuery_Exname = databaseManager.createSelect("db:/boss_sql/exnamen");
		fsQuery_Exname.result.addPk();
		fsQuery_Exname.sort.add(fsQuery_Exname.columns.taufdat.asc);
		fsQuery_Exname.where.add(fsQuery_Exname.columns.vessel_nr.eq(vesselNo));
		fsQuery_Exname.where.add(fsQuery_Exname.columns.taufdat.between(utils.dateFormat(searchDate, "yyyy-MM-dd"),utils.dateFormat(new Date(), "yyyy-MM-dd")));
		/** @type {JSFoundSet<db:/boss_sql/exnamen>} */
		var fs = databaseManager.getFoundSet(fsQuery_Exname);

```

Error:

> Exception in thread “AWT-EventQueue-2” java.lang.NoClassDefFoundError: org/joda/time/format/ISODateTimeFormat  
> at com.servoy.j2db.persistence.Column.getAsRightType(Column.java:434)  
> at com.servoy.j2db.querybuilder.impl.QBSelect.getAsRightType(QBSelect.java:549)  
> at com.servoy.j2db.querybuilder.impl.QBSelect.createOperand(QBSelect.java:536)  
> at com.servoy.j2db.querybuilder.impl.QBColumn.createOperand(QBColumn.java:93)  
> at com.servoy.j2db.querybuilder.impl.QBColumn.between(QBColumn.java:155)  
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)  
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)  
> at java.lang.reflect.Method.invoke(Unknown Source)  
> at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:138)  
> at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:292)  
> at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)  
> at org.mozilla.javascript.gen.br\_boss\_globals\_scopes\_bossGlobals\_search\_getVesselExname\_1046.\_c\_getVesselExname\_0(Unknown Source)  
> at org.mozilla.javascript.gen.br\_boss\_globals\_scopes\_bossGlobals\_search\_getVesselExname\_1046.call(Unknown Source)  
> at com.servoy.j2db.scripting.RecordingFunction.call(RecordingFunction.java:40)  
> at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)  
> at org.mozilla.javascript.gen.br\_boss\_globals\_calculations\_boss\_sql\_research\_contracts\_vesselNameBeginOfContract\_1045.\_c\_vesselNameBeginOfContract\_\_0(Unknown Source)  
> at org.mozilla.javascript.gen.br\_boss\_globals\_calculations\_boss\_sql\_research\_contracts\_vesselNameBeginOfContract\_1045.call(Unknown Source)  
> at com.servoy.j2db.scripting.ScriptEngine.executeFunction(ScriptEngine.java:665)  
> at com.servoy.j2db.scripting.TableScope.getCalculationValue(TableScope.java:187)  
> at com.servoy.j2db.scripting.TableScope.getCalculationValue(TableScope.java:215)  
> at com.servoy.j2db.dataprocessing.FoundSet.getCalculationValue(FoundSet.java:3761)  
> at com.servoy.j2db.dataprocessing.Record.getValue(Record.java:222)  
> at com.servoy.j2db.dataprocessing.Record.getValue(Record.java:185)  
> at com.servoy.j2db.dataprocessing.DataAdapterList.getValueObject(DataAdapterList.java:900)  
> at com.servoy.j2db.dataprocessing.DataAdapterList.getValueObject(DataAdapterList.java:877)  
> at com.servoy.j2db.smart.dataui.CellAdapter.valueChanged(CellAdapter.java:1736)  
> at com.servoy.j2db.dataprocessing.DataAdapterList.valueChanged(DataAdapterList.java:474)  
> at com.servoy.j2db.dataprocessing.ModificationSubject.fireModificationEvent(ModificationSubject.java:78)  
> at com.servoy.j2db.scripting.ScriptVariableScope.fireModificationEvent(ScriptVariableScope.java:483)  
> at com.servoy.j2db.scripting.ScriptVariableScope.put(ScriptVariableScope.java:445)  
> at com.servoy.j2db.scripting.ScriptVariableScope.put(ScriptVariableScope.java:310)  
> at com.servoy.j2db.scripting.FormScope.put(FormScope.java:465)  
> at org.mozilla.javascript.ScriptableObject.putProperty(ScriptableObject.java:2544)  
> at org.mozilla.javascript.ScriptRuntime.setName(ScriptRuntime.java:2084)  
> at org.mozilla.javascript.gen.br\_boss\_globals\_forms\_boss\_svy\_framework\_extensions\_onRecordSelection\_964.\_c\_onRecordSelection\_0(Unknown Source)  
> at org.mozilla.javascript.gen.br\_boss\_globals\_forms\_boss\_svy\_framework\_extensions\_onRecordSelection\_964.call(Unknown Source)  
> at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)  
> at org.mozilla.javascript.gen.br\_boss\_research\_personnel\_forms\_br\_boss\_research\_contracts\_contract\_tbl\_onRecordSelection\_963.\_c\_onRecordSelection\_0(Unknown Source)  
> at org.mozilla.javascript.gen.br\_boss\_research\_personnel\_forms\_br\_boss\_research\_contracts\_contract\_tbl\_onRecordSelection\_963.call(Unknown Source)  
> at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:399)  
> at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3534)  
> at org.mozilla.javascript.gen.br\_boss\_research\_personnel\_forms\_br\_boss\_research\_contracts\_contract\_tbl\_onRecordSelection\_963.call(Unknown Source)  
> at com.servoy.j2db.scripting.ScriptEngine.executeFunction(ScriptEngine.java:665)  
> at com.servoy.j2db.BasicFormController.executeFunction(BasicFormController.java:1067)  
> at com.servoy.j2db.BasicFormController.executeFormMethod(BasicFormController.java:786)  
> at com.servoy.j2db.BasicFormController.executeOnRecordSelect(BasicFormController.java:684)  
> at com.servoy.j2db.FormController.refreshAllPartRenderers(FormController.java:723)  
> at com.servoy.j2db.BasicFormController.valueChanged(BasicFormController.java:507)  
> at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)  
> at com.servoy.j2db.util.model.AlwaysRowSelectedSelectionModel.fireValueChanged(AlwaysRowSelectedSelectionModel.java:260)  
> at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)  
> at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)  
> at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)  
> at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)  
> at javax.swing.DefaultListSelectionModel.setSelectionInterval(Unknown Source)  
> at com.servoy.j2db.util.model.AlwaysRowSelectedSelectionModel.setSelectionInterval(AlwaysRowSelectedSelectionModel.java:333)  
> at com.servoy.j2db.gui.FixedJTable.processMouseEvent(FixedJTable.java:136)  
> at java.awt.Component.processEvent(Unknown Source)  
> at java.awt.Container.processEvent(Unknown Source)  
> at java.awt.Component.dispatchEventImpl(Unknown Source)  
> at java.awt.Container.dispatchEventImpl(Unknown Source)  
> at java.awt.Component.dispatchEvent(Unknown Source)  
> at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)  
> at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)  
> at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)  
> at java.awt.Container.dispatchEventImpl(Unknown Source)  
> at java.awt.Window.dispatchEventImpl(Unknown Source)  
> at java.awt.Component.dispatchEvent(Unknown Source)  
> at java.awt.EventQueue.dispatchEventImpl(Unknown Source)  
> at java.awt.EventQueue.access$500(Unknown Source)  
> at java.awt.EventQueue$3.run(Unknown Source)  
> at java.awt.EventQueue$3.run(Unknown Source)  
> at java.security.AccessController.doPrivileged(Native Method)  
> at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)  
> at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)  
> at java.awt.EventQueue$4.run(Unknown Source)  
> at java.awt.EventQueue$4.run(Unknown Source)  
> at java.security.AccessController.doPrivileged(Native Method)  
> at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)  
> at java.awt.EventQueue.dispatchEvent(Unknown Source)  
> at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)  
> at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)  
> at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)  
> at java.awt.EventDispatchThread.pumpEvents(Unknown Source)  
> at java.awt.EventDispatchThread.pumpEvents(Unknown Source)  
> at java.awt.EventDispatchThread.run(Unknown Source)

After that I went back to 8.3.0 and now I have the same error on the old version, too.

Changing  
fsQuery\_Exname.where.add(fsQuery\_Exname.columns.taufdat.between(utils.dateFormat(searchDate, “yyyy-MM-dd”),utils.dateFormat(new Date(), “yyyy-MM-dd”)));  
to  
fsQuery\_Exname.where.add(fsQuery\_Exname.columns.taufdat.between(searchDate,new Date()));

is running fine.

What happend and how to solve it?

---

<div class="post-metadata">

**Author:** ![jcompagner](https://yyz2.discourse-cdn.com/flex010/user_avatar/forum.servoy.com/jcompagner/32/4889_2.png) [@jcompagner](https://forum.servoy.com/u/jcompagner)\
**Post date:** [August 7, 2018, 1:35pm UTC](https://forum.servoy.com/t/servoy-8-3-1/19754/3 "2018-08-07T13:35:39Z")

</div>

thats weird this can mean 2 things  
or you don’t have joda-time.jar in your classpath (so the servoy\_server.bat doesn’t have it as an entry in the classpath)

or that file is somehow completely gone, no idea how that can happen, our update package should not do that.

---

<div class="post-metadata">

**Author:** ![jcompagner](https://yyz2.discourse-cdn.com/flex010/user_avatar/forum.servoy.com/jcompagner/32/4889_2.png) [@jcompagner](https://forum.servoy.com/u/jcompagner)\
**Post date:** [August 7, 2018, 1:53pm UTC](https://forum.servoy.com/t/servoy-8-3-1/19754/4 "2018-08-07T13:53:21Z")

</div>

i see that this is really a stacktrace of a smart client  
Such a client doesn’t get the joda-time.jar (that was until now really a server side jar, only used for ngclient and webclient)  
but now you also seem to need this in the smart client so we need to send this lib to the the client also through jnlp

A workaround for now would be to use the bootstrap.jar and reference that joda-time.jar in the bootstrap.jnlp

what you also can do is for example take the http.jar,jnlp file in the plugins dir  
and add this line:

just below the last   
Then that plugin should take care of the joda time download

---

<div class="post-metadata">

**Author:** ![briese-it](https://avatars.discourse-cdn.com/v4/letter/b/a698b9/32.png) [@briese-it](https://forum.servoy.com/u/briese-it)\
**Post date:** [August 7, 2018, 2:38pm UTC](https://forum.servoy.com/t/servoy-8-3-1/19754/5 "2018-08-07T14:38:56Z")

</div>

Hi Johan,  
adding the line was the trick, perfect.

Iam using the bootstrap, too. What syntax do I have to use to reference the jar? is not working. Think because of the file path?

---

<div class="post-metadata">

**Author:** ![jcompagner](https://yyz2.discourse-cdn.com/flex010/user_avatar/forum.servoy.com/jcompagner/32/4889_2.png) [@jcompagner](https://forum.servoy.com/u/jcompagner)\
**Post date:** [August 7, 2018, 3:00pm UTC](https://forum.servoy.com/t/servoy-8-3-1/19754/6 "2018-08-07T15:00:21Z")

</div>

and %%version%% should have a fixed version like “1”  
but if you add it in the http.jar.jnlp

then also boostrap will pick it up just fine (bootstrapper uses the same jnlps for download)

and you have to make sure that the path is correctly relative to the bootstrap.jnlp/jar  
(you could even copy the joda.jar besides bootstrap.jar and just add it without a path)

---

<div class="post-metadata">

**Author:** ![jcompagner](https://yyz2.discourse-cdn.com/flex010/user_avatar/forum.servoy.com/jcompagner/32/4889_2.png) [@jcompagner](https://forum.servoy.com/u/jcompagner)\
**Post date:** [August 7, 2018, 3:00pm UTC](https://forum.servoy.com/t/servoy-8-3-1/19754/7 "2018-08-07T15:00:44Z")

</div>

i created case to fix it for the main.jnlp
