Во время миграции я столкнулся с проблемой, связанной с ScriptEngine при оценке выражения Javascript.
Код: Выделить всё
ScriptEngine engine = new ScriptEngineManager().getEngineByExtension("js");
Итак, во время выполнения у меня возникло исключение NullPointerException.
Ищу решение, которое я нашел что теперь нашорн находится в отдельной библиотеке и мне нужно добавить зависимость
Код: Выделить всё
org.openjdk.nashorn
nashorn-core
15.4
Затем я нашел еще одно руководство, рекомендующее использовать graalvm:
graalvm .org
и я попробовал повторить инструкцию, но не могу добиться того же результата, как будто чего-то не хватает.
Мой проект состоит только из этого pom.xml:
Код: Выделить всё
org.springframework.boot
spring-boot-starter-parent
3.2.5
17
org.springframework.boot
spring-boot-starter
org.graalvm.js
js-scriptengine
23.0.4
org.graalvm.js
js
23.0.4
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
org.projectlombok
lombok
maven_central
Maven Central
https://repo.maven.apache.org/maven2/
Код: Выделить всё
@Slf4j
@SpringBootTest
class EngineTest {
@Test
void factoryTest(){
ScriptEngineManager manager = new ScriptEngineManager();
assertFalse(manager.getEngineFactories().isEmpty());
}
@Test
void test1(){
assertNotNull(getScriptEngineByName("js"));
}
@Test
void test2(){
assertNotNull(getScriptEngineByName("Javascript"));
}
@Test
void test3(){
assertNotNull(getScriptEngineByName("JavaScript"));
}
@Test
void test4(){
assertNotNull(getScriptEngineByName("graal.js"));
}
@Test
void test5(){
assertNotNull(getScriptEngineByExtension("js"));
}
@Test
void test6(){
assertNotNull(getScriptEngineByExtension("Javascript"));
}
@Test
void test7(){
assertNotNull(getScriptEngineByExtension("JavaScript"));
}
@Test
void test8(){
assertNotNull(getScriptEngineByExtension("graal.js"));
}
private ScriptEngine getScriptEngineByName(String name){
ScriptEngineManager manager = new ScriptEngineManager();
return manager.getEngineByName(name);
}
private ScriptEngine getScriptEngineByExtension(String extension){
ScriptEngineManager manager = new ScriptEngineManager();
return manager.getEngineByExtension(extension);
}
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... th-java-17