Jakarta ee “我如何解决?”;RhinoScriptEngineFactory无法强制转换为ScriptEngineFactory“;?

Jakarta ee “我如何解决?”;RhinoScriptEngineFactory无法强制转换为ScriptEngineFactory“;?,jakarta-ee,groovy,jboss,migration,legacy,Jakarta Ee,Groovy,Jboss,Migration,Legacy,最近,我被要求从旧环境迁移旧web应用程序: JBoss EAP 4.0.2 JDK1.5(JavaSE开发工具包5.0u22) 到较旧的目标环境: JBoss EAP 5.0.1 JDK1.6(JavaSE开发工具包6u45) 但在新环境中运行特定操作时,我得到了错误: java.lang.ClassCastException: com.sun.script.javascript.RhinoScriptEngineFactory cannot be cast to javax.scri

最近,我被要求从旧环境迁移旧web应用程序:

  • JBoss EAP 4.0.2
  • JDK1.5(JavaSE开发工具包5.0u22)
到较旧的目标环境:

  • JBoss EAP 5.0.1
  • JDK1.6(JavaSE开发工具包6u45)
但在新环境中运行特定操作时,我得到了错误:

java.lang.ClassCastException: com.sun.script.javascript.RhinoScriptEngineFactory cannot be cast to javax.script.ScriptEngineFactory
    at javax.script.ScriptEngineManager.initEngines(ScriptEngineManager.java:109)
    at javax.script.ScriptEngineManager.access$0(ScriptEngineManager.java:86)
    at javax.script.ScriptEngineManager$1.run(ScriptEngineManager.java:80)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.script.ScriptEngineManager.init(ScriptEngineManager.java:78)
    at javax.script.ScriptEngineManager.<init>(ScriptEngineManager.java:51)
    ...
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    ...
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
java.lang.ClassCastException:com.sun.script.javascript.RhinoScriptEngineFactory无法强制转换为javax.script.ScriptEngineFactory
位于javax.script.ScriptEngineManager.initEngines(ScriptEngineManager.java:109)
位于javax.script.ScriptEngineManager.access$0(ScriptEngineManager.java:86)
位于javax.script.ScriptEngineManager$1.run(ScriptEngineManager.java:80)
位于java.security.AccessController.doPrivileged(本机方法)
位于javax.script.ScriptEngineManager.init(ScriptEngineManager.java:78)
位于javax.script.ScriptEngineManager。(ScriptEngineManager.java:51)
...
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
...
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
位于org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
位于org.jboss.web.tomcat.security.jaccontextvalve.invoke(jaccontextvalve.java:92)
位于org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
位于org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
位于org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
位于org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
位于org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
位于org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
运行(Thread.java:619)
如何解决此异常

更新
产生上述异常的操作与传统web应用程序中的
jsr223-1.0.jar
提供的Groovy脚本语言有关。

这是一个JBoss类加载器问题,JDK(1.5到1.6)迁移使其变得复杂

,因此不再需要
jsr223-1.0.jar

对我有效的解决方案是删除
jsr223-1.0.jar
(归功于)


您可能会感兴趣。

我想他们知道Java 6已经过时很多年了吧?就像从石板迁移到纸莎草,而世界其他地方都不再使用电脑了?是的,tim_yates,他们知道。他们有一个环境迁移计划,相应地迁移应用程序,并有自己的生命周期和估计的迁移成本。在这种情况下,应用程序将在目标环境被解除之前终止。“从石碑到纸莎草”的迁移成本非常低;-)