>

클래스와 같은 레벨의 구성 파일을 읽을 수없는 이유를 잘 모르겠습니다. 아래 두 코드를 모두 시도했지만 두 입력 스트림이 모두 null입니다.

public MyClass
    public void getConfigurations()
    {
        String fileName = "myFile.conf";
        InputStream in = this.getClass().getResourceAsStream(fileName);
        InputStream inNew = this.getClass().getClassLoader().getResourceAsStream(fileName);
        System.out.println(in);
        System.out.println(inNew);
    }
    public static void main(String[] arg){
        MyClass myClass = new MyClass();
        myClass.getConfigurations();
    }
}

출력은 다음과 같습니다 :

null
null

여기는 내 디렉토리입니다

MyProject
    -src
        -com
            -test
                -MyClass.java
                -myFile.conf
    -lib

이 클래스를 실행 가능한 jar 파일로 패키지하여 Windows와 Linux 모두에서 작동하도록하고 싶습니다. jar 파일을 패키징 할 때 구성 파일이 클래스와 같은 수준에 있기를 원합니다.

내가 뭔가를 놓쳤습니까?

  • 답변 # 1

    절대 경로 ( / 로 시작하는 경로)를 사용하지 않는 경우 ),이 상황에서는 파일 위치를 얻을 수 없습니다.

    .class 를 실행했기 때문에   .java 가 아닌 파일  파일. 상대 경로가있는 다른 폴더에 클래스를 빌드하면 경로는 .class 의 위치를 ​​기준으로합니다.  파일입니다.

    java 파일과 같은 디렉토리에 클래스 파일을 넣으십시오. 지금 당신이 build 에 넣어 것 같아요  폴더.

    아니면 /src/com/test 와 같이 해보세요. . 이것이 절대 경로입니다.

  • 이전 ios - RxSwift 충돌 "아마도 델파이가 xib 또는 스토리 보드에 이미 설정되어 있으며 코드에서 덮어 쓰고 있습니다"
  • 다음 sql - DB는 N 호출 후 응답하지 않습니다