1
我想使用一些Jython代碼作爲Groovy閉包,所以我相信我需要將Jython文件導入到Groovy腳本中,並將其傳遞到Groovy的MethodClosure()函數中以生成閉包。如何將Jython文件導入到Groovy中?
例如,我把這個變成一個Groovy文件:
import rand$py
cl = MethodClosure(rand$py.Rand(), "nextDouble")
顯然jythonc也已被棄用,我找不到它在我的系統上,因此我從另一個導入它產生的蘭德$ py.class .py文件並在其他文件上運行Jython。 rand $ py.class與Groovy文件位於同一目錄中。
這裏是我得到的錯誤,當我嘗試執行Groovy的文件:
Exception in thread "main" java.lang.NoClassDefFoundError: org/python/core/PyRunnable
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
........
at com.tinkerpop.gremlin.jsr223.ScriptExecutor.evaluate(ScriptExecutor.java:34)
at com.tinkerpop.gremlin.jsr223.ScriptExecutor.main(ScriptExecutor.java:20)
Caused by: java.lang.ClassNotFoundException: org.python.core.PyRunnable
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
它看起來像它的發現,因爲不知何故,知道這是一個Python文件(或它知道,因爲$ PY在他們的名字?)。我通常不在JVM中工作,所以我可能錯過了一些基本的東西。
編輯:我改變import rand$py
到import bogus$py
,看它是否產生同樣的錯誤,並沒有因此它看起來像它的某些部分是尋找類文件:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script1.groovy: 80: unable to resolve class bogus$py
@ line 80, column 1.
import bogus$py
^
1 error