Hi, we are migrating e-cienciaDatos from Dataverse v5.10.1 to v6.4 and we get a null pointer exception in the languages Field.
It works in v5.10.1, but fails in v6.4
The database :Languages setting entry is filled.
dvndb=> select * from setting where name =':Languages';
name | content | id | lang
------------+--------------------------------------------------------------------------------------------------------+----+------
:Languages | [{"locale":"es","title":"Spanish"},{"locale":"en","title":"English"},{"locale":"fr","title":"French"}] | 40 |
The dataverse.lang .directory value in domain.xml file is set
grep dataverse.lang $PAYARA/glassfish/domains/domain1/config/domain.xml
<jvm-options>-Ddataverse.lang.directory=/usr/local/dataverseLang</jvm-options>
The log trace is long, but we have checked that the Dataverse.initLocale method is called and all languages are read:
The server.log trace shows:
[2024-11-18T11:05:40.772+0100] [Payara 6.2024.10] [WARNING] [AS-EJB-00056] [jakarta.enterprise.ejb.container] [tid: _ThreadID=198 _ThreadName=http-thread-pool::http-listener-1(2)] [timeMillis: 1731924340772] [levelValue: 900] [[
A system exception occurred during an invocation on EJB DatasetFieldServiceBean, method: public java.lang.String edu.harvard.iq.dataverse.DatasetFieldServiceBean.getFieldLanguage(java.lang.String,java.lang.String)]]
[2024-11-18T11:05:40.773+0100] [Payara 6.2024.10] [WARNING] [] [jakarta.enterprise.ejb.container] [tid: _ThreadID=198 _ThreadName=http-thread-pool::http-listener-1(2)] [timeMillis: 1731924340773] [levelValue: 900] [[
jakarta.ejb.EJBException: Cannot invoke "String.split(String)" because "languages" is null
at com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:723)
at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:652)
at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:482)
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4601)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2134)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2104)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:90)
at jdk.proxy74/jdk.proxy74.$Proxy373.getFieldLanguage(Unknown Source)
at edu.harvard.iq.dataverse.__EJB31_Generated__DatasetFieldServiceBean__Intf____Bean__.getFieldLanguage(Unknown Source)
at edu.harvard.iq.dataverse.DatasetPage.getFieldLanguage(DatasetPage.java:6207)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[.................]
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.lang.NullPointerException: Cannot invoke "String.split(String)" because "languages" is null
at edu.harvard.iq.dataverse.DatasetFieldServiceBean.getFieldLanguage(DatasetFieldServiceBean.java:856)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
[.................]
... 96 more
]]
[2024-11-18T11:05:40.775+0100] [Payara 6.2024.10] [SEVERE] [] [jakarta.enterprise.resource.webcontainer.faces.application] [tid: _ThreadID=198 _ThreadName=http-thread-pool::http-listener-1(2)] [timeMillis: 1731924340775] [levelValue: 1000] [[
Error Rendering View[/dataverse.xhtml]
jakarta.el.ELException: /search-include-fragment.xhtml @390,208 value="#{DatasetPage.getFieldLanguage(cvocConf.get(SearchIncludeFragment.getFieldTypeId(friendlyNames.get(0))).getString('languages'))}": jakarta.ejb.EJBException: Cannot invoke "String.split(String)" because "languages" is null
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:77)
at com.sun.faces.renderkit.html_basic.HtmlResponseWriter.getAttributeValue(HtmlResponseWriter.java:1137)
at com.sun.faces.renderkit.html_basic.HtmlResponseWriter.flushAttributes(HtmlResponseWriter.java:1097)
[.................]
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:83)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:101)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:535)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: jakarta.el.ELException: jakarta.ejb.EJBException: Cannot invoke "String.split(String)" because "languages" is null
at jakarta.el.ELUtil.invokeMethod(ELUtil.java:221)
[.................]
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:73)
... 80 more
Caused by: jakarta.ejb.EJBException: Cannot invoke "String.split(String)" because "languages" is null
at com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:723)
at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:652)
at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:482)
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4601)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2134)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2104)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:90)
at jdk.proxy74/jdk.proxy74.$Proxy373.getFieldLanguage(Unknown Source)
at edu.harvard.iq.dataverse.__EJB31_Generated__DatasetFieldServiceBean__Intf____Bean__.getFieldLanguage(Unknown Source)
at edu.harvard.iq.dataverse.DatasetPage.getFieldLanguage(DatasetPage.java:6207)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
... 87 more
Caused by: java.lang.NullPointerException: Cannot invoke "String.split(String)" because "languages" is null
at edu.harvard.iq.dataverse.DatasetFieldServiceBean.getFieldLanguage(DatasetFieldServiceBean.java:856)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[.................]
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212)
... 96 more
]]
[2024-11-18T11:05:40.783+0100] [Payara 6.2024.10] [WARNING] [] [jakarta.enterprise.web.core] [tid: _ThreadID=198 _ThreadName=http-thread-pool::http-listener-1(2)] [timeMillis: 1731924340783] [levelValue: 900] [[
Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException: Cannot invoke "String.split(String)" because "languages" is null
at edu.harvard.iq.dataverse.DatasetFieldServiceBean.getFieldLanguage(DatasetFieldServiceBean.java:856)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[.................]
90)
at jdk.proxy74/jdk.proxy74.$Proxy373.getFieldLanguage(Unknown Source)
at edu.harvard.iq.dataverse.__EJB31_Generated__DatasetFieldServiceBean__Intf____Bean__.getFieldLanguage(Unknown Source)
at edu.harvard.iq.dataverse.DatasetPage.getFieldLanguage(DatasetPage.java:6207)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[.................]
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515)
at java.base/java.lang.Thread.run(Thread.java:840)
]]
[2024-11-18T11:05:40.784+0100] [Payara 6.2024.10] [WARNING] [] [jakarta.enterprise.web] [tid: _ThreadID=198 _ThreadName=http-thread-pool::http-listener-1(2)] [timeMillis: 1731924340784] [levelValue: 900] [[
StandardWrapperValve[default]: Servlet.service() for servlet default threw exception
java.lang.NullPointerException: Cannot invoke "String.split(String)" because "languages" is null
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[.................]
com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:90)
at jdk.proxy74/jdk.proxy74.$Proxy373.getFieldLanguage(Unknown Source)
at edu.harvard.iq.dataverse.__EJB31_Generated__DatasetFieldServiceBean__Intf____Bean__.getFieldLanguage(Unknown Source)
at edu.harvard.iq.dataverse.DatasetPage.getFieldLanguage(DatasetPage.java:6207)
[.................]
at java.base/java.lang.Thread.run(Thread.java:840)
]]
Do you know where could be the problem?
Thanks
Juan
@Juan yikes, thanks for letting us know. I see cvocConf.get in there. As an experiment, have you tried disabling the external controlled vocabulary feature?
Thanks @Philip Durbin 🐉 . I will try it.
I didn't have the ":CVocConf" entry in the database settings:
dvndb=> select * from setting where name like '%CVocConf%';
name | content | id | lang
------+---------+----+------
(0 rows)
I think that the external vocabulary is disabled.
Thanks. Interesting. I wonder why it appears in the stacktrace.
According to https://metrics.dataverse.org eight installations have upgraded to 6.4 but I don't know if any of them are using multiple languages.
We aren't at Harvard Dataverse. Just English.
You might want to email https://groups.google.com/g/dataverse-community
Thank you, I will send the e-mail.
Thanks for posting https://groups.google.com/g/dataverse-community/c/pCMSLdiYR_0/m/aDsXzWXgCAAJ
It looks like @Mireia Alcala replied already.
You are right, I will start with the Alfredo recommendation at first. Thanks.
At the end, the problem was that we were using a wrong Payara version. The help here and on the Google group was, as always, perfect.
Juan has marked this topic as resolved.
Last updated: Oct 30 2025 at 06:21 UTC