1

Java で次のように、LuaJ を使用してさまざまな Lua スクリプトをグローバル環境にロードしています。

globals = JmePlatform.standardGlobals();
LuaValue chunk = globals.load(new FileInputStream(luaScriptA), scriptName, "t", globals);
chunk.call();

私の問題は、たとえば、scriptName がたまたま、require、print、error、math、または呼び出し後にグローバルに既に存在するその他の名前である場合です。

globals = JmePlatform.standardGlobals();

、スクリプトは実際には印刷などの実際の機能を置き換え/上書きします。

これを防ぐ簡単な方法はありますか?

残念ながら、次のようなテスト:

if (globals.get(scriptName) != Globals.NIL) {
    //then dont allow script load
}

スクリプトが更新されたときに、既存のスクリプトを実際にオーバーライドする必要がある場合があるため、私には機能しません。

4

1 に答える 1