問題タブ [luaj]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Luaj から Java メソッドを実行すると、「index expected, got string」
私は小さなプロジェクトに取り組んでおり、ユーザーが独自のコンテンツを作成できるように lua スクリプトを含めることを望んでいました。ほとんど動作するようになりました。スクリプトを読み込んで実行したり、Java 内から特定の Lua メソッドを実行したりできます。しかし、lua スクリプトで実行できるメソッドを Java で作成する方法がわかりません。
私は周りを検索し、私が欲しいものを正確に説明しているこの投稿を見つけました.
残念ながら、私はそれを機能させることができません。
私が試しているコードの最も単純な例を次に示します。
Main.java
MyLib.Java
SomeFunc.java
test.lua
私が得るエラーはですindex expected, got string
。これは、env.set("mine", mine);
「MyLib.java」内の行で発生します。
完全なエラー メッセージ
java - ホスト プログラムから単一の lua ステートメントを実行することは可能ですか?
lua ベースのスクリプト システムをゲーム エンジンに埋め込もうとしています。スクリプトでブロック コマンドと非ブロック コマンドの両方を使用できるようにしたいと考えています。次に例を示します。
"walkTo" は 1 フレーム以上の実行で "アクティブ" である必要があるため、関数全体ではなく Java ホストから一度に 1 つのステートメントを実行できるようにしたいと考えています。これは、必要のない実際のマルチスレッドを使用するのはやり過ぎになるためです。
ステートメントを 1 つだけ実行し、次のステートメントが実行されるまで実行状態を「一時停止」しておくことができれば、コマンドがホストで終了したかどうかをチェックすることで「walkTo」などのブロッキング コマンドを実装できます。それ以外の場合は、次のフレーム反復まで待ちます。
LuaJ (または他の Lua API) を使用して Java ホストから一度に 1 つのステートメントを実行する方法はありますか? または、lex と yacc を使用して独自のスクリプト エンジンを開発する必要がありますか?
どんな良いアイデアでも大歓迎です、ありがとう!
android - Android で LuaJ を使用して Lua スクリプト内から他の Lua スクリプトを要求する
他の Lua スクリプトを必要とする Android 上の LuaJ を介して Java から Lua スクリプトを呼び出すのに問題があります。現在の作業ディレクトリと関係があると思います。
私がJavaで試していること:
pathTest.lua:
この特定のテストでは、わかりやすくするために両方の lua ファイルが同じディレクトリにありますが、他の lua ファイルへの相対パスが必要になります。
package.path で遊んでみましたが、何もうまくいきませんでした。Android で実行する場合、デフォルトで package.path == "?.lua" になります。
コマンドライン経由で相対パスを使用してこのテストを実行し、Koneki を使用して Eclipse 内で実行しましたが、正常に動作しました。特に失敗しているのは Android 環境です。
また、Android で正常に動作する必要のない Lua スクリプトを取得できます。
scala - 動的にバインドされた関数の「通常の」呼び出し構文を複製する方法は?
以下の例では、変数fn2_class
は lua スクリプトからロードされる関数を表しているため、var
定義が必要です。実際の関数がどうなるかは、コンパイル時にはわかりません。この変数fn1_class
は、同じアイデアの静的にバインドされたバージョンを表します。fn1_class
したがって、との唯一の違いはfn2_class
、前者が値として定義され、後者が変数として定義されることです。
メソッドgetFunction
は、lua 関数がどのように読み込まれるかを表します。実際のコードには、関数を生成するための luaj ライブラリーへの呼び出しが含まれています。
このコンテキストを念頭に置いて質問を言い換えると、fn3_class
動的にバインドされ、例の値と同じ呼び出し構文を持つ変数を定義する方法はfn1_class
?
この質問は scala-2.10 以降に関するものです。この種のコードは、scala-2.9 でコンパイルおよび実行されていました。
問題を示すコード例:
上記のコードをコンパイルすると、次のエラー メッセージが生成されます (scala-2.10)。
java - Java - LuaJ: 3 つ以上の引数
lua関数で3つ以上の引数を使用することは可能ですか?
これが私のコードです:
android - Android アプリで LUAJ を使用しようとすると、クラス Lua が見つかりません
LUAJよりも私の無知が深いと思うので、お手柔らかにお願いします。
目標: Lua スクリプトをアプリ内から定期的に実行し、Lua と Java の間でデータをやり取りし、ある程度のセキュリティを確保する (たとえば、lua にファイルを削除させない)
私のアプリの大部分はそのままの Android/Java であり、正常に動作します。その文脈では、私はそれほどばかではありません。
さまざまな例から作業して、最終的に LUAJ Jar ファイルを外部 Jar として Eclipse に取り込みました。その後、これらのインポートは機能しました
ほとんどのコードは大部分がコンパイルされていますが、この行で使用する「Lua」インターフェースはまだありません。
その行は、「Lua はスーパークラスではないため実装できません」で失敗します。Luaが何であるかはわかりません(他の名前空間などで同族を見つけている場合を除きます)。
また、 Lua:add() などのオーバーライドも同様に文句を言います(オーバーライドするためのスーパーがありません)たとえば:
(スーパータイプをオーバーライドする必要があります)
Lua自体のためにEclipseに追加する必要がある外部Jarのようなものがあると思いますか?しかし、それを行うための指示は見つかりませんでした(また、LUAJがLuaの完全なJava実装である場合、このインターフェースクラスを期待しますLUAJ jar の一部にもなります。
私が見つけた 3 つの LUAJ jar のうち、Eclipse にはそのうちの 1 つ (JME やソースではなく、JSE) についてのみ伝えました。