Java新手。我正在构建一个 Java HTTP 服务器(不允许使用特殊库)。我需要提供某些文件(我称之为模板),我正在使用这段代码为它们提供服务:
this.getClass().getResourceAsStream("/http/templates/404.html")
并将它们包含在我的 .jar 中。这行得通。(我意识到我正在将它们作为输入流读取。)
现在我想将模板、常规文件、重定向的所有文件(作为文件类型)存储在一个哈希图中,如下所示:url -> 文件。我有一个提供文件的响应类。
这适用于除我的模板之外的所有内容。如果我尝试在 hashmap 中插入 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