2013-07-09 28 views
1

我有一個應用程序正在jar中編譯的Groovy代碼上運行。從JAR加載Groovy配置文件時出錯

groovy代碼全部正在加載/正確執行,但是,我有一個嘗試從JAR的根加載groovy-config文件的步驟,但它失敗。

下面的代碼是從正在從JAR運行一個常規類,並且在這裏它試圖從罐子的根加載常規配置文件config.props

URL url = this.getClass().getClassLoader().getResource("config.props") 
logger.info(url.toString()) 
if(!url)throw new IllegalArgumentException("'$resource' not found ") 
GroovyScriptEngine gse = new GroovyScriptEngine(url) 
... 
gse.run(url.file, binding) 

當運行上述的我得到以下錯誤:

Message: Cannot open URL: jar:file:/usr/local/libs/test-all.jar!/config.props 

有沒有人有任何想法如何從jar的根加載文件?我已經臨時將權限設置爲777,並且檢查了文件是否存在/拼寫正確。

+0

你已經嘗試了絕對路徑(帶有斜槓)是啊? 'this.getClass()。getClassLoader()。getResource(「/ config.props」)' –

+0

如果是這樣,我的第二個猜測是將jar解壓到某個地方並檢查config.props文件是否是你認爲它的地方是 –

+0

@tim_yates - 謝謝,是的,我試過了。其實,錯誤信息是它無法打開網址。如果我在第一行傳入一個垃圾名稱,那麼我得到一個不同的錯誤(我得到一個錯誤,說文件不存在)。所以問題似乎不是它無法找到該文件。 – rhinds

回答

1

好的 - 我想我已經解決了這個問題。

它看起來就像是

gse.run(url.file, binding) 

錯誤的url.file通過完整的絕對路徑,包括file:議定書GSE - 我改變了這只是「config.props」,它似乎已經得到了過去,這(有現在是另一個錯誤,但似乎更進一步)。

+0

謝謝你的問題和答案 - 我有完全相同的問題。我使用「url.file.text」來獲取文本,結果證明我需要的是「url.text」。你應該繼續並接受你的答案。 –