2013-08-01 59 views
0

調用Java代碼,我有一個Groovy腳本source.groovy問題與常規

#!/usr/bin/env runner 
import groovy.sql.Sql 
import my.package.MyJavaClass 
def String NL = System.getProperty('line.separator') 

我帶參數運行常規:

groovy --classpath C:/Projects/myproject/build/classes source.groovy 

凡類就是螞蟻放編譯的Java代碼的輸出文件夾。 但隨着錯誤

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 
C:\Projects\myproject\src\groovy\source.groovy: 12: unable to resolve class my.package.MyJavaClass 
@ line 12, column 1. 
    import my.package.MyJavaClass 
^

1 error 

常規failse我應該設置任何附加參數,從常規導入Java文件? 謝謝!

+1

爲什麼你在你的groovy腳本的頂部有'#!/ usr/bin/env runner'?你不需要'def String NL',只需'String NL'就可以。你的班級是否真的有'package'作爲它的包裝名稱?你能檢查文件「C:/ Projects/myproject/build/classes/my/package/MyJavaClass.class'嗎?我不是在Windows上,但不應該將這些斜槓作爲Windows路徑的反斜槓? –

+0

@tim_yates runner是一個包裝與葡萄設置。例如,使用包和類的名稱,它們很長,我不想超載我的示例代碼。是的,我可以看到這個文件,我認爲/ shoud也適用於classpath。 – dbf

回答

0

當您運行groovy腳本時,您需要在所有-D選項之前路徑classpath(-cp)參數。否則,它被忽略。

+0

然後你應該修改你的問題,因爲沒有提到-D選項。 – Dime

1

權,考慮到以下目錄結構:

. 
|-- build 
|  |-- classes 
|   |-- org 
|     |-- example 
|      |-- Test.class 
|-- source.groovy 

Test.classTest.java建:

package org.example ; 

public class Test { 
    public String getName() { 
     return "tim_yates" ; 
    } 
} 

而且source.groovy是:

import org.example.Test 

println new Test().getName() 
println new Test().name 

然後運行:

groovy -cp build/classes source.groovy 

打印:

tim_yates 
tim_yates 

你得到同樣的結果?

+0

不,我得到了一個錯誤。看起來我有與紅寶石發行版的一些問題。對於這個腳本:def classpath = System.getProperty('java.class.path') 用groovy -cp build/classes運行的print classpath 1.groovy我得到了這個輸出:C:\ Programs \ groovy \ lib \ groovy-2.1 .jar和build/classes不在classpath中 – dbf

+0

Ruby發行版?你會得到什麼錯誤?當然你在Java源代碼的頂部有一個'package org.example';你沒有說你的java源碼是什麼...... –

+0

Tim,謝謝你的幫助。我終於明白了這個問題。問題是,當你運行groovy時,你需要在指定-D選項之前指定-cp參數。在我的情況下,有代理設置,我從我的例子中刪除它們。下次我會發布到完整版:) :) – dbf