2014-02-09 3 views
2

에 null가 나는 문제,이 호출이getClass()의 getResource (resourcePath) 창에 유효한, 리눅스

URL fileURL = getClass()의 getResource (resourcePath).;

은 Windows (7 64b)에서는 작동하지만 null을 반환하는 Linux (Ubuntu 13.10 64b)에서는 작동하지 않습니다.

왜? 파일이 있고 문자열

String resourcePath = "/tut01/shaders/vertex_shader.glsl" 

두 파일은 내 집에

편집있는 다음 (상대 경로)입니다 :이 프로젝트는 갓 복제하고 있었고, 난 그 미안 & 빌드를 청소하는 것을 잊었다 .. 이제는 발견했습니다. 그러나 비록 내가 수정하더라도, vertex_shader.glsl을 가정 해 봅시다. 내 프로그램은 항상 이전 버전을 참조 할 것입니다. 편집 할 때마다 변경 사항을 확인하기 위해 &을 빌드해야합니다. 왜? 창문에 나는 그렇게 할 필요가 없습니다 ..

+0

그것은 당신이 resourcePath', 나는 추측 '을위한에서 통과 어떤 따라 달라집니다. 당신이 당신의 코멘트 : –

+0

그래, 나는 그것을 추가했다? 리눅스/홈/당선자/문서/현대 JOGL - 예/현대 JOGL - 예/SRC/tut01/쉐이더/fragment_shader에 – elect

+0

파일의 정확한 경로는 무엇인가를 작성했을 때 – immibis

답변

1

리소스 경로는 /으로 시작하므로 절대 경로입니다. 리소스 경로를 상대 경로로 지정하려면 먼저 /을 생략해야합니다. Class.getResource(String name)의 자바 독 가입일

:

이름은 '/'('\의 u002f')로 시작하면, 자원의 절대 이름은 다음 이름의 부분 '/ '.

그렇지 절대 이름은 다음과 같은 형태의 경우 : modified_package_name은 '/'치환이 오브젝트의 패키지 이름 modified_package_name/이름은 '.' ('\ u002e').

상대 경로는 getClass()에 의해 반환 된 클래스의 경로를 기준으로합니다.

예 :

package org.example; 

public class MyClass { 
    public void foo() { 
     getClass().getResource("tut01/shaders/vertex_shader.glsl"); 
    } 
} 

가의 컴파일러를 가정 해 보자는 /home/my-project/bin/org/example/MyClass.class에 컴파일 된 클래스 파일을 작성합니다.

getClass().getResource("tut01/shaders/vertex_shader.glsl")/home/my-project/bin/org/example/tut01/shaders/vertex_shader.glsl에서 파일을 보일 것이다.

0

확인을 볼 수 있어야합니다 즉에 액세스 할 수있는 resourcePath에 값을 넣어보십시오 resourcePath 위치에 대한 읽기 액세스 권한이 donot 보인다을 Java 프로그램을 실행하는 Linux 계정에 필요한 모든 파일 (파일 경로의 파일 및 폴더)이
인 경우 파일이 실제로
인 경우 사용 권한 문제 일 수 있습니다.

+0

sudo로 Netbeans을 실행하려고 시도했지만 성공하지 못했습니다. sudo로 Netbeans를 실행하면 자동으로 해당 권한이있는 Java 응용 프로그램이 실행됩니다. – elect

+0

음, NetBeans가 아니기 때문에, 당신이 만든 Java 프로그램입니다. 나는 공식 문서 페이지에서 그것을 읽지 않는 한 그것을 가정 할 수 있다고 생각하지 않는다. 프로그램을 컴파일하고 NetBeans 외부에서 실행할 것입니다. 프로그램이 너무 복잡하면 사용 권한 문제인지 여부를 분리/탐지하는 데 도움이되는 작은 프로그램을 작성하십시오. –

+0

그러나 프로젝트와 데이터는 모두 내 홈 폴더 내에 있습니다. 필요한 권한이 있어야합니다 ...하지만 당신이 말한대로하려고합니다. IDE 외부의 리소스에 어떻게 액세스 할 수 있습니까? – elect