したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。

B11 と readcgi.js のスレ#9 @避難所

256名無しさん@避難所:2020/09/21(月) 12:05:57 ID:4VChuvig0
>>255
Javaクラスがインポートできないのは、V2C上で動かしていることが影響してそうです

こちらもAdoptOpenJDK 14+36 Windows x86で試したのですが、
このTest.javaは、

--------
import javax.script.*;

public class Test {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");

System.out.println(engine.getFactory().getEngineName());
try {
Object result = engine.eval("java.lang.System.getProperty('os.name');");
System.out.println(result);
} catch (ScriptException e) {
e.printStackTrace();
}
}
}
--------

java -classpath "graaljs.jar;graal-sdk-20.2.0.jar;js-scriptengine-20.2.0.jar;tregex.jar;truffle-api.jar;icu4j.jar;(Test.classの場所)" -Dpolyglot.js.nashorn-compat=true Test
でちゃんと動くのですよね

GraalVMに付属のjsコマンドでもgetProperty is not a functionと言われていたのは
教えていただいた ttps://logico-jp.io/2020/03/24/nashorn-removal-graalvm-to-the-rescue/
に書いてあった--jvmオプションで解決することが分かりました

--------
C:\jdk-graal\languages\js\bin>js --experimental-options --js.nashorn-compat=true
> java.lang.System.getProperty('os.name');
TypeError: (intermediate value).lang.System.getProperty is not a function
at <js> :program(<shell>:1:1:0-38)
> quit();

C:\jdk-graal\languages\js\bin>js --experimental-options --js.nashorn-compat=true --jvm
> java.lang.System.getProperty('os.name');
Windows 10
> quit();
--------

V2C.exe経由で起動する時にjsの--jvmと同等のことができればよいかもしれないですが
具体的な方法は分からずです

Access to host class java.lang.System is not allowed or does not exist.
については、同じ状態を再現できていないので確証はないですが
not allowedの方でひっかかっているなら、以下でアクセス許可してやればよいかもしれないです
>>254のコードでいうとL257の次あたりに

--------
if (str1.indexOf("Graal") >= 0) {
Bindings bindings = localScriptEngine.getBindings(ScriptContext.ENGINE_SCOPE);
bindings.put("polyglot.js.allowAllAccess", true);
}
--------

参考文献
ttps://github.com/graalvm/graaljs/blob/master/docs/user/ScriptEngine.md#setting-options-via-bindings




掲示板管理者へ連絡 無料レンタル掲示板