2017-06-08 44 views
0

我無法編譯和運行Groovy腳本。我拿第一個例子Gold.groovy。我可以 groovyc的Gold.groovygroovyc似乎不編譯,類不可運行

編譯它,當我嘗試之後開始它: java的黃金

我得到錯誤信息

"Fehler: Hauptklasse Gold konnte nicht gefunden oder geladen werden" - which means in english ~ "Main class not found"

有沒有人暗示什麼,我可以嘗試或在哪裏可以找到錯誤?

感謝正手

List fibo = [1, 1]       //#A 
 
List gold = [1, 2]       //#B 
 

 
while (! isGolden(gold[-1])) {   //#C 
 
    fibo.add(fibo[-1] + fibo[-2])   //#D 
 
    gold.add(fibo[-1]/fibo[-2])   //#E 
 
} 
 

 
println "found golden ratio with fibo(${ fibo.size-1 }) as" 
 
println fibo[-1] + "/" + fibo[-2] + " = " + gold[-1] 
 
println "_" * 10 + "|" + "_" * (10 * gold[-1]) 
 

 
def isGolden(candidate) {     //#F 
 
    def small = 1       //#G 
 
    def big = small * candidate    //#H 
 
    return isCloseEnough((small+big)/big, big/small) 
 
} 
 

 
def isCloseEnough(a,b) { return (a-b).abs() < 1.0e-9 } 
 
//#A Initial Fibonacci numbers 
 
//#B Golden ration candidates 
 
//#C Last gold candidate 
 
//#D Next fibo number 
 
//#E Next golden candidate 
 
//#F Candidate satisfies golden rule 
 
//#G Smaller section 
 
//#H Bigger section

用於請求:屏幕輸出

D:\work\groovy\GroovyInAction-master\listings\chap01>set CLASSPATH 
CLASSPATH=.;D:\DevTools\groovy-2.4.7\embeddable\groovy-all-2.4.7.jar 

D:\work\groovy\GroovyInAction-master\listings\chap01>type HelloWorld.groovy 
println "Hello World" 

D:\work\groovy\GroovyInAction-master\listings\chap01>groovyc HelloWorld.groovy 

D:\work\groovy\GroovyInAction-master\listings\chap01>java WelloWorld 
Fehler: Hauptklasse WelloWorld konnte nicht gefunden oder geladen werden 

D:\work\groovy\GroovyInAction-master\listings\chap01>javac -cp .;D:\DevTools\gro 
ovy-2.4.7\embeddable\groovy-all-2.4.7.jar HelloWorld 
error: Class names, 'HelloWorld', are only accepted if annotation processing is 
explicitly requested 
1 error 
+1

嗨,你可以提供一個[MCVE] –

+0

我已添加信息來源 – toohoo

回答

1

Gold.groovy:

def name = 'world' 
println "hello $name!" 

編譯:

java -cp embeddable\groovy-all-2.4.11.jar;. Gold 

groovyc Gold.groovy 

Gold.class產生

RUN(用於UNIX類路徑中使用:代替;

輸出:

hello world! 
+0

謝謝,這裏一樣,但輸出:「Fehler:Hauptklasse Gold konnte nicht gefunden oder geladen werden」〜[EN]主類找不到 – toohoo

+0

看,如果我指定不存在類路徑和德語本地化中的類名:'java -cp embeddable \ groovy-all-2.4.11.jar ;. -Duser.language = de Gold1'我收到了和你一樣的信息:'Fehler:Hauptklasse Gold1 konnte nicht gefunden oder geladen werden'。這意味着名爲'Gold'的類不在由'-cp'參數定義的類路徑中。你能顯示你的命令行嗎? – daggett

+0

D:\ work \ groovy \ GroovyInAction-master \ listings \ chap01>鍵入HelloWorld。常規 的println 「Hello World」 的 d:\工作\常規\ GroovyInAction主\目錄\ chap01> groovyc的HelloWorld.groovy d:\工作\常規\ GroovyInAction主\目錄\ chap01>設置CLASSPATH CLASSPATH = ; d:\ DevTools \常規-2.4.7 \嵌入\ Groovy的全2.3.2.jar d:\工作\常規\ GroovyInAction主\列表\ chap01>的java -cp; d:\ DevTools \ groo vy-2.4.7 \ embeddable \ groovy-all-2.3.2.jar HelloWorld Fehler:Hauptklasse HelloWorld konnte nicht gefunden oder geladen werden – toohoo

0

你應該使用groovy Gold.groovy

Java實際上不知道有關groovy腳本。一個腳本總是編譯成一個類。 Groovy編譯器會爲您編譯該類,並將腳本的主體複製到run()方法中。

+0

感謝您的提示。我知道groovyc正在編寫腳本到一個類。我在目錄中有Gold.class。所以如果Gold.class可用,我認爲命令「Java Gold」應該啓動課程。我確實在書中讀到過,groovyc會自動用主要方法包裝腳本。我對嗎? – toohoo

+0

@toohoo我相信java正在尋找主類,但groovyc將此代碼編譯爲'run()'方法。所以,你不能運行'java黃金' –