2014-06-12 3 views
2

Java over Play 2.2 프레임 워크에서 개발 한 웹 응용 프로그램이 있습니다. 응용 프로그램을 로컬에서 실행할 때 프로젝트 폴더의 일부 파일에 액세스하는 Java 클래스 중 하나가 정상적으로 실행됩니다.배포 된 Java 클래스에서는 액세스 할 수 없지만 재생시 개발 된 웹 응용 프로그램에서 로컬로 작업하는 파일

jar 파일을 만든 다음 실행하면 Java 코드가 해당 파일을 읽을 수 없습니다. 파일은 공용 폴더에 있으며 항아리에 포장되어 있습니다.

HTML에서 참조한 다른 파일이 있으며 액세스 할 수 있지만 Java 클래스는 파일에 액세스 할 수 없습니다.

이 문제를 해결할 수 있도록 도와주세요.

답변

1

jar 파일 내부에있는 파일에 액세스하려고합니다. 내가 너의 질문을 이해했다면. 내가

당신은 같은 것을 사용할 수 틀렸다 경우 제발 올바른 :

InputStream is = this.getClass().getClassLoader().getResourceAsStream(fileFromJarFile); 

TEST.TXT 만약 당신의 JAR 파일의 루트에 있었다가, 당신은 사용하십시오 :

InputStream is = this.getClass().getClassLoader().getResourceAsStream("test.txt"); 

참고 : 파일과 Java 클래스는 동일한 jar 파일에 있어야합니다.

+0

처음에는 파일이 jar 파일이 아니라 프로젝트 폴더에 있습니다. 다른 컴퓨터에서 실행하기 위해 프로젝트 패키지를 만들면 [_play dist_] 명령을 사용하여 jar 파일을 만듭니다. 문제는 응용 프로그램을 패키징 한 후 HTML이 수 있지만 Java 클래스 파일을 액세스 할 수 없습니다. 나는 분명하다. – AnkitG

+0

파일입니다. 하지만 항아리를 만든 다음 액세스하려고 할 때 프로젝트 폴더에서 정상적인 파일 읽기가 가능하지만 항아리 아래에 있다면 위와 같이해야합니다. –

1

필자의 경우 코드가 모두 좋았으므로 항아리 측의 디렉토리 구조는 내가 그 부분을 놓친 부분이었다.

@APaul이 말한 것처럼 파일/폴더를 jar 파일과 동일하게 유지해야했지만 시도했지만 jar 파일을 실행하기 위해 일괄 처리를 사용했기 때문에 작동하지 않았습니다. 내 파일은 배치 파일이 들어있는 폴더에 있어야합니다. 내 잘못이야!

어쨌든 Thanks @APaul.