1

We have test class DocumentIndicatorTest. Early it work with @RunWith(MockitoJUnitRunner.class). Now we change it on @RunWith(PowerMockRunner.class). And it perfect work on local pc (win7). But when this script running on bamboo server (linux), it failed:

java.lang.ExceptionInInitializerError: null
        at sun.org.mozilla.javascript.internal.ContextFactory.initGlobal(ContextFactory.java:196)
        at com.sun.script.javascript.RhinoScriptEngine.<clinit>(RhinoScriptEngine.java:49)
        at java.lang.J9VMInternals.initializeImpl(Native Method)
        at java.lang.J9VMInternals.initialize(J9VMInternals.java:236)
        at com.sun.script.javascript.RhinoScriptEngineFactory.getScriptEngine(RhinoScriptEngineFactory.java:57)
        at javax.script.ScriptEngineManager.getEngineByName(ScriptEngineManager.java:226)
        at ru.blogic.lecm.common.scripting.ScriptExecutorImpl.getEngine(ScriptExecutorImpl.java:28)
        at ru.blogic.lecm.common.scripting.ScriptExecutorImpl.addScript(ScriptExecutorImpl.java:39)
        at ru.blogic.lecm.util.js.CommandResolverJsImpl.resolveScript(CommandResolverJsImpl.java:53)
        at ru.blogic.lecm.util.js.CommandResolverJsImpl.resolve(CommandResolverJsImpl.java:70)
        at ru.blogic.lecm.util.DocumentIndicatorTest.assertResultCode(DocumentIndicatorTest.java:1226)
        at ru.blogic.lecm.util.DocumentIndicatorTest.resolutionHasReportTest(DocumentIndicatorTest.java:125)
        at ru.blogic.lecm.util.DocumentIndicatorTest.resolutionHasExecutionReportTest(DocumentIndicatorTest.java:184)

java.lang.NoClassDefFoundError: com.sun.script.javascript.RhinoScriptEngine (initialization failure)
        at sun.org.mozilla.javascript.internal.ContextFactory.initGlobal(ContextFactory.java:196)
        at com.sun.script.javascript.RhinoScriptEngine.<clinit>(RhinoScriptEngine.java:49)
        at java.lang.J9VMInternals.initializeImpl(Native Method)
        at java.lang.J9VMInternals.initialize(J9VMInternals.java:236)
        at com.sun.script.javascript.RhinoScriptEngineFactory.getScriptEngine(RhinoScriptEngineFactory.java:57)
        at javax.script.ScriptEngineManager.getEngineByName(ScriptEngineManager.java:226)
        at ru.blogic.lecm.common.scripting.ScriptExecutorImpl.getEngine(ScriptExecutorImpl.java:28)
        at ru.blogic.lecm.common.scripting.ScriptExecutorImpl.addScript(ScriptExecutorImpl.java:39)
        at ru.blogic.lecm.util.js.CommandResolverJsImpl.resolveScript(CommandResolverJsImpl.java:53)
        at ru.blogic.lecm.util.js.CommandResolverJsImpl.resolve(CommandResolverJsImpl.java:70)
        at ru.blogic.lecm.util.DocumentIndicatorTest.assertResultCode(DocumentIndicatorTest.java:1226)
        at ru.blogic.lecm.util.DocumentIndicatorTest.resolutionHasReportTest(DocumentIndicatorTest.java:125)
        at ru.blogic.lecm.util.DocumentIndicatorTest.resolutionHasExecutionReportTest(DocumentIndicatorTest.java:184)

Without powerMockito all is ok.

Problem point is new ScriptEngineManager().getEngineByName(engineType.name().toLowerCase());.

RhinoScriptEngine - class from IBM jdk, javascript.jar. May be problem in different jar versions (WebSphere versions) on local and dev pc.

There is ideas, how fix it?

P.S. sorry for my english

ᄂ ᄀ
  • 5,669
  • 6
  • 43
  • 57
MacTire
  • 21
  • 7
  • 1
    PowerMock uses custom class loader. I think it could be two reason: PowerMock class loader cannot get access to *javascript.jar* so the `com.sun.script.javascript.RhinoScriptEngine` class cannot be loaded. Second: the javax.script.ScriptEngineManager also uses custom class loader. You may try to use `@PowerMockIgnore` – Artur Zagretdinov Aug 06 '16 at 12:07
  • Right you are! @PowerMockIgnore helped. When I add this firstly, I lost "*" , and it was @PowerMockIgnore({"com.sun.script.", "javax.script."}). But now @PowerMockIgnore({"com.sun.script.*", "javax.script.*"}). We also raised the powermock version from 1.6.2 up to 1.6.5, but it certainly will not solve. Thx! – MacTire Aug 11 '16 at 12:17

0 Answers0