Не могу понять, почему в коде движка ScriptEngine указано значение null.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Не могу понять, почему в коде движка ScriptEngine указано значение null.

Сообщение Anonymous »

Это часть кода, который я использую для сервера MapleStory. Всякий раз, когда должен произойти сценарий для такого события, как разговор с NPC, этот сценарий будет запущен для создания пути сценария для любого вызываемого сценария (NPC, портал, событие и т. д.).
Я также использую jdk1.7.0_80

Код: Выделить всё

lang-java
package scripting;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import client.MapleClient;
import tools.FileoutputUtil;

public abstract class AbstractScriptManager {

private static final ScriptEngineManager sem = new ScriptEngineManager(null);

protected Invocable getInvocable(String path, MapleClient c) {
return getInvocable(path, c, false);
}

protected Invocable getInvocable(String path, MapleClient c, boolean npc) {
FileReader fr = null;
try {
path = "scripts/" + path;
ScriptEngine engine = null;

if (c != null) {
engine = c.getScriptEngine(path);
}
if (engine == null) {
File scriptFile = new File(path);
if (!scriptFile.exists()) {
return null;
}
engine = sem.getEngineByName("JavaScript");
if (c != null) {
c.setScriptEngine(path, engine);
}
fr = new FileReader(scriptFile);
engine.eval(fr);
} else if (c != null && npc) {
c.getPlayer().dropMessage(-1, "You already are talking to this NPC. Use @ea if this is
not intended.");
}
return (Invocable) engine;
} catch (Exception e) {
System.err.println("Error executing script. Path: " + path + "\nException " + e);
FileoutputUtil.log(FileoutputUtil.ScriptEx_Log, "Error executing script. Path: " + path +
"\nException " + e);
return null;
} finally {
try {
if (fr != null) {
fr.close();
}
} catch (IOException ignore) {

}
}
}
}
Вот сообщение об ошибке bat:

Ошибка выполнения сценария. Путь: scripts/event/someEvent.js Исключение
java.lang.NullPointerException: невозможно вызвать
"javax.script.ScriptEngine.eval(java.io.Reader)", поскольку "engine" имеет значение null

Эти ошибки возникают всякий раз, когда я пытаюсь взаимодействовать с чем-то, использующим этот метод (например, при нажатии на NPC или при запуске сервера при запуске некоторых сценариев).< /п>

Подробнее здесь: https://stackoverflow.com/questions/657 ... ll-in-code
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Сохраняет ли Clearscript ScriptEngine код для последующих вызовов Execute?
    Anonymous » » в форуме C#
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • ScriptEngine Javascript в Springboot с Java 17
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как я могу заставить Python ScriptEngine очистить кеш импортированных модулей?
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как я могу заставить Python ScriptEngine очистить кеш импортированных модулей?
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Как понять «постоянство мелкое» в отношении ссылок (как указано в cppreference.com)?
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»