Runnable jar文件找不到资源

时间:2014-09-01 14:18:42

标签: java eclipse jar

我创建了一个运行登录屏幕的jar文件。当我输入用户的凭据时,它使用XML文件来验证凭据。我的jar文件似乎没有找到这个XML文件。这是我的文件目录:  enter image description here

我的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)";

当我运行它时,我的项目在eclipse上正常工作。我不知道为什么我的罐子不起作用

1 个答案:

答案 0 :(得分:0)

我认为你的包装有问题。我刚编译了一个测试程序,显示的东西按预期工作:

mabi@terra ~ $ 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);
        }
    }
}

编译并运行:

mabi@terra ~ $ cd /tmp/test/ && javac Test.java 
mabi@terra /tmp/test $ jar cfe test.jar Test -C /tmp/test Test.class users.xml
mabi@terra /tmp/test $ java -jar test.jar
Got: jar:file:/tmp/test/test.jar!/users.xml

您的jar中没有该文件,或者getClass()返回的类位于不同的jar中,然后是包含users.xml的jar。