2015-03-02 39 views
0

我有這樣的結構的模塊:Vert.x如何調用文件的模塊

module_root/ 
    mod.json 
    filestore/myfile 
    com/my/www/my.groovy(Compiled to my.class) 

我想打電話給filestore/myfilemy.groovy。我嘗試了很多方法來訪問文件,但我失敗了。

首先,我嘗試使用相對路徑。 ../../../filestore/myfilefilestore/myfile都失敗。 No such file or directory

new FileInputStream('../../../filestore/myfile').withStream { 
    // ... 
} 

然後我嘗試使用絕對路徑,我不知道如何獲取模塊的絕對路徑。我試圖讓my.groovy路徑使用此代碼:

scriptFile = getClass().protectionDomain.codeSource.location.path 

但是,當我exec的vertx runzip mymodule.zip,我得到一個異常:

java.lang.NullPointerException: Cannot get property 'location' on null object 

如何做到這一點?

+0

你試過'/ filestore/myfile'嗎?即:'getClass()。getResourceAsStream('/ filestore/myfile')。text' – 2015-03-02 16:01:40

+0

Hi @tim_yates。我跟着你的代碼,但拋出一個異常:''java.lang.NullPointerException:無法獲得null對象的屬性'文本' – 2015-03-03 01:48:50

回答

0

對我來說這works..please讓我知道,如果你的作品:

this is js, I don't know groovy but I suppose than must be similar 
var CURRENT-DIRECTORY = new java.io.File("").getAbsolutePath() 

那麼你可以使用字符串連接

CURRENT-DIRECTORY+"/filestore/myfile/mysuperFile.groovy" <--notice the/

記得比響應是一個緩衝,也許你必須這被轉換爲字符串

return response.toString() 

好運