2014-09-01 94 views
0

我創建了一個運行登錄屏幕的jar文件。當我輸入用戶的憑證時,它使用XML文件來驗證憑證。我的jar文件似乎沒有找到這個XML文件。這裏是我的文件目錄: enter image description here可運行jar文件找不到資源

我的jar文件是這樣創建的: enter image description here

Users.xml文件被加載這樣

URL url = getClass().getResource("/users.xml"); 
String path = url.getPath(); 
String loginQuery = "for $x in doc('"+ path +"')//User where ($x/Username='" + username +"') " 
+ " and ($x/Password='" + password + "') return data($x/Name)"; 

我的項目工作正常,在日食的時候我運行。我不知道爲什麼我的罐子不工作

+0

你檢查了'users.xml'文件的生成jar嗎?它需要直接出現在你的jar的根文件夾中。 – mabi 2014-09-01 14:25:09

+0

@mabi是的,它在我的jar文件的根目錄下 – geek2be 2014-09-01 15:03:32

+0

而錯誤是你得到了'url == null'?唯一我能想到的是嘗試一個不同的類加載器,即使用'getSystemResource()'。 – mabi 2014-09-01 15:13:39

回答

0

我認爲這是您的包裝問題。我剛剛編譯了一個測試程序,展示的東西按預期工作:

[email protected] ~ $ cat /tmp/test/Test.java 
import java.net.URL; 

public class Test { 
    public static void main(String[] args) { 
     Test instance = new Test(); 
     URL absDynRes = instance.getClass().getResource("/users.xml"); 
     if (absDynRes == null) { 
      System.out.println("Absolute dynamic URL is null"); 
     } else { 
      System.out.println("Got: " + absDynRes); 
     } 
    } 
} 

編譯並運行:

[email protected] ~ $ cd /tmp/test/ && javac Test.java 
[email protected] /tmp/test $ jar cfe test.jar Test -C /tmp/test Test.class users.xml 
[email protected] /tmp/test $ java -jar test.jar 
Got: jar:file:/tmp/test/test.jar!/users.xml 

要麼你沒有在你的JAR文件或getClass()駐留在返回的類一個不同的罐子,然後包含users.xml