我面临一个问题,在我的maven项目中,nashorn JavaScript引擎无法工作。当我同时使用java 8和java 11时,以下代码在独立的java文件中工作。
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
ScriptEngine engine = scriptEngineManager.getEngineByName("JavaScript");
if (engine == null)
System.out.println("The engine is null.");
但是在我的maven项目中使用相同的代码时,它只适用于java 11,当我在maven项目中使用java 8时,engine
是空的。我打印了现有的引擎和它们的别名,我看到了nashorn和JavaScript别名。这是以前的工作,我不认为因为我的项目的改变,它是坏的。在我的maven项目中,我也不依赖nashorn (因为它应该存在于java 8?)。有什么想法吗?
注意:我使用的是Java1.8(或java 8),当我使用Java1.11(或Java 11)时,问题就消失了。
发布于 2022-09-10 11:38:30
我也面临着一个类似的问题。
Java 1.8、Maven 3.8
当我通过mvn test
-引擎运行测试时,它是不可用的,并且我得到了错误Can't find scripting engine for 'javascript': scriptEngine is null
。同时,当应用程序或junit测试通过idea运行时,一切正常。
在我的例子中,问题是在万无一失的插件配置中:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<forkCount>0</forkCount>
<runOrder>alphabetical</runOrder>
<reportsDirectory>${junit.utReportFolder}</reportsDirectory>
</configuration>
</plugin>
问题是forkCount = 0。如果删除param forkCound (转到默认值)- nashorn引擎就可用了。
https://stackoverflow.com/questions/71919026
复制相似问题