我試圖讓我的應用程序能夠與Java 9一起運行,但不幸的是其中一個普通的jar依賴項,當它嘗試使用classLoader.getResource(name)
加載資源時,它會獲得null值。如何讓自動模塊在Java 9中找到自己的資源?
這當然,在Java 8
工作我宣佈使用模塊文件有問題的模塊的依賴關係,指的是由它的罐子名(可怕的)模塊的名稱,並添加使用--module-path
選項按原樣(沒有爲Java 9定製)。
這裏是我的近似模塊文件聲明:
module my.mod {
requires ivy; // the file is called ivy-2.4.0.jar
}
而且我用這個命令運行:
java --module-path my-mod.jar:ivy-2.4.0.jar -m my.mod
當我運行應用程序,它工作正常,如果圖書館不嘗試加載該資源......但是如果是這樣的話,它會在它嘗試使用該資源的行上得到一個NullPointerException
。
我可以看到資源存在於jar文件的正確路徑中。
我試着運行我的應用程序既作爲一個jar(如上圖所示),並剛剛與類文件:
java --module-path modules-dir:ivy-2.4.0.jar -m my.module/my.Main
在後一種情況下,錯誤是不同的,但相互關聯:常春藤不能甚至找到一個它試圖從它自己的jar加載的屬性文件!
是否有任何解決方法,這是一個已知的錯誤,或者我做錯了什麼?
你從哪裏得到Java 9?它被釋放? 2017 06 15 –
獲取[SDKMAN](http://sdkman.io/)並使用'sdk install java 9ea167'進行安裝。這是一個EA(Early Access)版本。 – Renato
只是無法得到問題,my.mod.jar與my.mod模塊文件有什麼關係? 你想讓my-mod.jar依賴於ivy-2.4.0.jar嗎? – chebus