nextgenhealthcare / connect

The swiss army knife of healthcare integration.
Other
940 stars 280 forks source link

slf4j 1.7.28 doesn`t work correctly with Java 11 in Connect 3.9.1 #4422

Open IMKnysh opened 4 years ago

IMKnysh commented 4 years ago

When we are trying to add the following code to our channel configuration it fails with errors (see the case Description):

Code from channel configuration:

importPackage(org.slf4j); try { statusCode = "AA"; MDC.put("trackingId", msg['MSH']['MSH.14']['MSH.14.1'].toString()); orderProcessing = new OrderProcessing(); mapper = $('mapper'); result = orderProcessing.processMessage(); statusCode = result.status; if (statusCode != 'AE') { patientJson = result.patientDetails; }

Errors: ` Transformer error ERROR MESSAGE: Error evaluating transformer java.lang.IllegalAccessError: class org.apache.log4j.MDCFriend tried to access field org.apache.log4j.MDC.mdc (org.apache.log4j.MDCFriend is in unnamed module of loader java.net.URLClassLoader @59d016c9; org.apache.log4j.MDC is in unnamed module of loader java.net.URLClassLoader @63440df3) at org.apache.log4j.MDCFriend.fixForJava9(MDCFriend.java:11) at org.slf4j.impl.Log4jMDCAdapter.(Log4jMDCAdapter.java:38) at org.slf4j.impl.StaticMDCBinder.getMDCA(StaticMDCBinder.java:59) at org.slf4j.MDC.bwCompatibleGetMDCAdapterFromBinder(MDC.java:99) at org.slf4j.MDC.(MDC.java:108) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126) at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225) at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1479) at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:815) at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109) at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:405) at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3508) at org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:120) at com.mirth.connect.server.util.javascript.JavaScriptTask.executeScript(JavaScriptTask.java:150) at com.mirth.connect.server.transformers.JavaScriptFilterTransformer$FilterTransformerTask.doCall(JavaScriptFilterTransformer.java:143) at com.mirth.connect.server.transformers.JavaScriptFilterTransformer$FilterTransformerTask.doCall(JavaScriptFilterTransformer.java:119) at com.mirth.connect.server.util.javascript.JavaScriptTask.call(JavaScriptTask.java:113) at java.base/java.util.concurrent.FutureTask.run(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source)

Transformer error ERROR MESSAGE: Error evaluating transformer java.lang.NoClassDefFoundError: Could not initialize class org.slf4j.MDC at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126) at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225) at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1479) at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:815) at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109) at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:405) at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3508) at org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:120) at com.mirth.connect.server.util.javascript.JavaScriptTask.executeScript(JavaScriptTask.java:150) at com.mirth.connect.server.transformers.JavaScriptFilterTransformer$FilterTransformerTask.doCall(JavaScriptFilterTransformer.java:143) at com.mirth.connect.server.transformers.JavaScriptFilterTransformer$FilterTransformerTask.doCall(JavaScriptFilterTransformer.java:119) at com.mirth.connect.server.util.javascript.JavaScriptTask.call(JavaScriptTask.java:113) at java.base/java.util.concurrent.FutureTask.run(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source) `

IMKnysh commented 4 years ago

I fixed this issue by downgrading slf4 to the 1.6.1 version. Looks like we have Log4j and slf4j version inconsistency.

cturczynskyj commented 4 years ago

Possibly related to https://jira.qos.ch/browse/SLF4J-438