我在獲取文件路徑(資產文件夾中的sh文件)時獲取了NPE。 我試圖從下面的線索讀到關於NPE的詳細信息,但是這實際上無法解決我的問題。在Java中獲取文件路徑時發生java.lang.NullPointerException(通過jar文件執行)
What is a NullPointerException, and how do I fix it?
以下是我的代碼片段:
File absPathofBash;
url = ClassLoader.class.getResource("assets/forbackingup.sh");
absPathofBash = new File(url.getPath());
後來我用它在一個的ProcessBuilder,作爲
ProcessBuilder pb = new ProcessBuilder(url.getPath(), param2, param3)
我還試圖獲得絕對直接路徑,如
absPathofBash = new File("assets/forbackingup.sh").getAbsolutePath();
使用後一種方式,我可以處理它,但如果我創建了一個罐子那麼該文件無法找到。 (儘管Jar包含相應文件夾內的文件資產)
如果有人能幫助我,我會很感激。
你不能使用'File'來訪問'Jar'文件中的嵌入式資源,它們不是文件系統看到它們的「文件」,它們是一堆壓縮字節在一個zip文件(基本上)。在你的情況下,如果你想執行這個文件,你需要從Jar文件中提取文件(你可以使用'Class#getResourceAsStream')然後執行它 – MadProgrammer