2015-09-15 49 views
0

我試圖使用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() 

請建議。

+0

你是如何編譯Java文件?你是否聲明瞭任何執行代碼的主要方法 –

+1

爲什麼要分叉JVM(運行單獨的java程序)是否有特殊的原因? 在初始類路徑中加載java類或使用URLClassLoader加載它(然後使用反射運行主方法)會快得多 –

+0

@DanyalSandeelo我通過groovy使用javac命令編譯.java文件,然後我試圖執行它。 –

回答

0

$ {fileName}的值是什麼。我認爲它包含像「ABC.java」這樣的值。因爲你必須使用命令「java $ {className}」。

Use: 

java ${className} 

ex: 
If com.abc.ABC is the class containing the main function 
java com.abc.ABC 

套餐還需要

+0

你可以分享你正試圖執行的課程嗎? –