我正在尝试使用graalvm从Python代码访问Java对象。有人能给我指一下示例代码吗?基本上我希望能够运行graalpython-polyglot-jvmmyscript.py文件哪里myscript.py文件能够实例化Java对象
我已经浏览了graalvm文档,我发现的唯一一个示例是从Python代码实例化Java数组(见下文),我也浏览了链接https://www.graalvm.org/docs/reference-manual/embed/#access-java-from-guest-languages中的polyglot示例,它实际上运行Java polyglot API,该API运行访问Java对象的Python代码,但这不是我想要的。你知道吗
下面的代码示例来自这个link,它还提到“和访问除Java数组以外的其他类时,需要重新编译映像并提供一个反射配置文件”,但我不太明白如何做到这一点。你知道吗
import java
array = java.type("int[]")(4)
array[2] = 42
print("Printing Java Array" , array[2])
我尝试将上面的代码修改为:
import java
import polyglot
array = java.type("int[]")(4)
array[2] = 42
print("Printing Java Array" , array[2])
# Just to see if I can access Java , example copied from Javascript -> Java
re = polyglot.eval(string="RegExp()", language="java")
我得到了以下订单:
Printing Java Array 42
Traceback (most recent call last):
File "polyglot.py", line 8, in <module 'polyglot.py'>
re = polyglot.eval(string="RegExp()", language="java")
NotImplementedError: No language for id java found. Supported languages are: [internal/nfi-native, nfi, regex, js, llvm, python, ruby]
您不能从字符串计算Java代码—Java语言的特殊之处在于它是宿主语言—您只能访问类路径上可用的内容(作为字节码)。要访问Java,必须编写Python代码,而不是Java代码,例如:
对象的行为相当合理,即实例化与调用相同,
dir(javaRegexp)
将为您提供可用的Java方法等等。你知道吗相关问题 更多 >
编程相关推荐