1

我们有测试类 DocumentIndicatorTest。早期它与@RunWith(MockitoJUnitRunner.class) 一起工作。现在我们在@RunWith(PowerMockRunner.class) 上更改它。它在本地电脑(win7)上完美运行。但是当这个脚本在竹服务器(linux)上运行时,它失败了:

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)

没有 powerMockito 一切正常。

问题点是 new ScriptEngineManager().getEngineByName(engineType.name().toLowerCase());。

RhinoScriptEngine - 来自 IBM jdk 的类,javascript.jar。本地和开发 PC 上的不同 jar 版本(WebSphere 版本)可能存在问题。

有想法,怎么解决?

PS对不起我的英语

4

0 回答 0