We are pleased to announce the availability of Servoy 8.3.1 (releasenumber 3205)
This version is available through our download site
The update site is: 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
see for the changes in 8.3:
Whats new
fixes done in 8.3.1rc:
8.3.1RC fixes and feature
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
Since updating to 8.3.1 I have problems with formatting dates on the Application server (developer is running fine).
Code:
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?
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.
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
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?
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)
i created case to fix it for the main.jnlp