我試圖使用Groovy腳本來執行Java類文件執行Java類:使用Groovy代碼
def sout = new StringBuffer(), serr = new StringBuffer()
def proc = "java ${fileName}".execute()
proc.consumeProcessOutput(sout, serr)
proc.waitFor()
println "out> $sout err> $serr"
它提供了錯誤:err> Error: Could not find or load main class cle47d1d78d99a44a8ba01f0bc7612ad16
(使用UUID生成的類名)。但是當我在bash中執行它時,它會提供正確的輸出。我檢查了文件名,pwd並確保.class文件存在於groovy試圖執行命令的文件夾中。
我能夠成功運行其他命令,並編譯java文件使用:
def proc = "javac ${file.path}".execute()
請建議。
你是如何編譯Java文件?你是否聲明瞭任何執行代碼的主要方法 –
爲什麼要分叉JVM(運行單獨的java程序)是否有特殊的原因? 在初始類路徑中加載java類或使用URLClassLoader加載它(然後使用反射運行主方法)會快得多 –
@DanyalSandeelo我通過groovy使用javac命令編譯.java文件,然後我試圖執行它。 –