Java 初心者。Java HTTP サーバーを構築しています (特別なライブラリは許可されていません)。提供する必要がある特定のファイルがあり (テンプレートと呼んでいます)、次のコードを使用してそれらを提供していました。
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 内のテンプレートが表示されます。
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