Hello,
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)
]]
Someone has found some similar issue?
Best,
Juan
Hello,
We've seen that you've encountered an error, which we also experienced.
If we’re not mistaken, it seems mandatory to define the languages in which the metadata is filled. In our case, we use English, Catalan, and Spanish.
However, it’s not working exactly as we’d like because the dropdowns don’t translate automatically; instead, we must refresh the page. For this reason, we’ve set English as the default for now.
Do you happen to have any additional insights or guidance?
Thank you in advance 🙂
Juan,
The method in the error log is called when you are using External Controlled Vocabulary scripts. The values come from the languages entry in the configuration you use, e.g. https://github.com/gdcc/dataverse-external-vocab-support/blob/dc71bd59197074d8ba0df79a45c0e4ac3778a164/examples/config/authorsOrcidAndRor.json#L11, that indicates which languages the script/service supports. According to the schema, it should be non-null. It’s possible that older config examples did not have a languages value.
FWIW: That’s separate from the :Languages setting which determines which languages the overall Dataverse user interface will use and from the :MetadataLanguages setting, which defines which languages a Dataverse instance will accept when people enter dataset metadata.
Mireia,
I’m not sure I understand which setting and which page you are talking about, but my guess would be that if something is not refreshing immediately and you have to reload the page, it’s a bug. If you can provide more details, please submit an issue at https://github.com/QualitativeDataRepository/TechnicalTeam/issues.
-- Jim
-- 
You received this message because you are subscribed to the Google Groups "Dataverse Users Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
dataverse-commu...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/dataverse-community/b7e82087-9ea0-49b2-9bbe-d83bfd223ef8n%40googlegroups.com.