2014-09-01 5 views
0

로그인 화면을 실행하는 jar 파일을 만들었습니다. 사용자의 자격 증명을 입력하면 XML 파일을 사용하여 자격 증명의 유효성을 검사합니다. 내 jar 파일이이 XML 파일을 찾지 못하는 것 같습니다. enter image description hereRunnable jar 파일에서 리소스를 찾지 못했습니다.

내 jar 파일은 다음과 같이 생성된다 : 여기 내 파일 디렉토리입니다 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)"; 

내 프로젝트로로드 enter image description here

은 일식에 잘 작동 때 그것을 실행하십시오. 내 항아리가 효과가없는 이유를 모르겠다.

+0

생성 된 jar 파일에서'users.xml' 파일을 확인 했습니까? 항아리의 루트 폴더에 직접 나타나야합니다. – mabi

+0

@mabi 그렇습니다. 내 항아리 파일의 루트에 있습니다. – geek2be

+0

그리고 오류는'url == null'입니까? 내가 생각할 수있는 유일한 것은'getSystemResource()'를 사용하여 다른 클래스 로더를 시도하는 것이다. – mabi

답변

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 

어느 당신이 당신의 항아리에 파일 또는 getClass()가 상주에 의해 반환 된 클래스를하지 않아도 그냥 물건을 표시하는 것은 예상대로 작동, 테스트 프로그램을 컴파일 다른 항아리에는 users.xml이 들어 있습니다.

관련 문제