Java를 처음 접하십니다. Java HTTP 서버를 구축 중입니다 (특별한 라이브러리는 허용되지 않습니다). 거기에 내가 섬기는 데 필요한 특정 파일 (템플릿 내가 그들을 부르는 것입니다) 그리고 나는이 코드 조각을 사용하여 그들을 제공했다 :getResource를 사용하여 Java의 ArrayList에 파일을 저장할 수 있습니까?
this.getClass().getResourceAsStream("/http/templates/404.html")
그리고 내 .JAR에서 그들을 포함. 이것은 효과가 있었다. (입력 스트림으로 읽었 음을 알고 있습니다.)
이제 템플릿, 일반 파일, 내 파일 (파일 유형)을 모두 다음과 같은 해시 맵에 리디렉션합니다. url -> file . 파일을 제공하는 Response 클래스가 있습니다.
내 템플릿을 제외한 모든 항목에서 작동합니다. 해시 맵에 getResource 코드를 삽입하려고하면 Response 클래스에 오류가 발생합니다.
new File(this.getClass().getResource("/http/templates/404.html").getFile())
이 내가지고있어 오류는 다음과 같습니다 :
이
내가 내 해시 맵을 구축하기 위해 사용하고 내 코드 내가이 명령을 실행하고있는 템플릿을 볼 수 있습니다Exception in thread "main" java.io.FileNotFoundException: file:/Users/Kelly/Desktop/Java_HTTP_Server/build/jar/server.jar!/http/templates/404.html (No such file or directory)
내 항아리 :
jar tf server.jar
내 생각이 잘못 됐습니까? 나는 퍼즐 조각을 놓치고 있다고 생각한다.
업데이트 : 위의 마지막 명령을 실행할 때 얻을 수있는 부분이 있습니다. 파일에 대한 경로가 올바르게 있다고 생각합니까?
http/server/serverSocket/SystemServerSocket.class
http/server/serverSocket/WebServerSocket.class
http/server/ServerTest.class
http/templates/
http/templates/404.html
http/templates/file_directory.html
http/templates/form.html
getFile() 대신 getPath()를 사용해보십시오. 또한 유효한 경로인지 확인하십시오. –
고마워, 조쉬! 그래도 작동하지 않았다. 나는 똑같은 정확한 오류를 얻는다. 또한 내 질문을 업데이트하여 내 server.jar에 무엇이 있는지 보여줍니다. – Kelly
예외로부터의 메시지 텍스트는 당신에게 단서를 주어야합니다 : 그것은'Stream'으로 열릴 수있는 jar 파일에 대한 약간의 참조이지만 적절한'File' 위치가 아닙니다. 왜 여기에'File' 객체가 필요합니까? –