【问题标题】:No scripting engine associated with scripting language JavaScript没有与脚本语言 JavaScript 关联的脚本引擎
【发布时间】:2021-03-16 10:55:32
【问题描述】:

我正在 CentOS 7 服务器上安装 Shibboleth IDP。我安装了 JDK 15.0.2 和 Tomcat 9.0.44

Java 版本是:

java version "15.0.2" 2021-01-19
Java(TM) SE Runtime Environment (build 15.0.2+7-27)
Java HotSpot(TM) 64-Bit Server VM (build 15.0.2+7-27, mixed mode, sharing)

我编译了 Shibboleth war 并将其部署到 Tomcat。但是,在尝试启动应用程序时,我在 Tomcat 日志中收到此错误:

2021-03-16 13:02:41.218 [ WARN] : net.shibboleth.ext.spring.context.DelimiterAwareApplicationContext: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shibboleth.ProtocolLookupFunction' defined in file [/opt/shibboleth-idp/system/conf/audit-system.xml]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [net.shibboleth.idp.profile.context.navigate.ScriptedContextLookupFunction]: Factory method 'inlineScript' threw exception; nested exception is net.shibboleth.utilities.java.support.logic.ConstraintViolationException: No scripting engine associated with scripting language JavaScript
2021-03-16 13:02:41.240 [ERROR] : org.springframework.web.context.ContextLoader: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shibboleth.ProtocolLookupFunction' defined in file [/opt/shibboleth-idp/system/conf/audit-system.xml]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [net.shibboleth.idp.profile.context.navigate.ScriptedContextLookupFunction]: Factory method 'inlineScript' threw exception; nested exception is net.shibboleth.utilities.java.support.logic.ConstraintViolationException: No scripting engine associated with scripting language JavaScript
        at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:656)
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557)

如果我理解正确的话,JRE 中应该有一个脚本引擎来执行 JavaScript。是否需要启用?怎么样?

【问题讨论】:

标签: javascript java tomcat9 shibboleth


【解决方案1】:

Java 15 及更高版本不再包含捆绑的 JavaScript 引擎。

解决此问题的最简单方法是使用早期版本的 Java。请注意,Shibboleth 项目仅正式支持 Java 的长期支持版本,对于 IdP V4.0.1 意味着 Java 11。

另一位评论者指出,如果您确实需要使用最新的 Java 和当前的 IdP 版本,则可以将单独的 JavaScript 引擎添加到您的类路径中,但这不是受支持的配置。

展望未来,Shibbleth IdP 4.1 版本(现在很快就会发布)有一个插件机制来帮助支持这个用例,但使用 Java 11 仍然是最简单的方法。

当前版本的 Shibboleth IdP 的完整系统要求文档在这里:https://wiki.shibboleth.net/confluence/display/IDP4/SystemRequirements

【讨论】:

  • 谢谢。我将切换到 JDK 11。
猜你喜欢
  • 2010-09-10
  • 1970-01-01
  • 2013-06-19
  • 2015-12-20
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-04
相关资源
最近更新 更多