具有导出为 JAR 的简单 Web 服务器的 Java 应用程序

标签 java webserver

我使用 Java API 创建了一个简单的 Web 服务器应用程序。
Web 服务器按预期工作,我能够在浏览器中获取 HTML 页面。

我正在 Windows 机器上开发这个 Java 应用程序。为了进行测试,我将应用程序导出为 JAR,然后在目标设备(即 Linux Box)上进行测试。在我的应用程序中,我创建了一个“webroot”文件夹,并且存储该 Web 服务器需要提供服务的所有 HTML 文件。

因此,当我创建应用程序的 JAR 文件时,它有“webroot”文件夹,其中包含所有 html 文件。当我在 Windows 上运行这个应用程序时,我可以获得 html 页面。但是,当我在 Linux 机器上以 JAR 形式运行此应用程序时,我无法检索 html 文件。另外,当我将“webroot”文件夹复制到 JAR 外部时,它就会起作用,并且我能够看到 HTML 页面在浏览器中传递。

那么有什么方法可以访问 jar 文件本身中的 html 页面而不将它们复制到外面呢?

我的项目文件夹结构如下:

/src
  -com.myprj.server -> contains server Java files 
/webroot -> all the html pages
/bin -> jar files as per the above package path 
/myprj.jar -> Project jar file 

所以上面的jar文件有webroot文件夹。从代码中我将其访问为“webroot/FileName.html”。如果我将 webroot 保留在与 jar 相同的文件夹中,那么它就可以工作。

最佳答案

如果不知道您实际上是如何提供内容的,很难说您做错了什么,但您始终可以使用 Class.getResourceAsStream() 从类路径访问资源。如果您将其作为 jar 文件运行,则 jar 文件的内容也会包含在类路径中。

要在 jar 文件之外提供内容,可以在类路径中包含“webroot”,或者创建某种机制来首先尝试类路径,然后尝试外部路径。

关于具有导出为 JAR 的简单 Web 服务器的 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43997943/

相关文章:

java - 如何使用 Spring-security 以编程方式登录用户?

java - 无法自动配置 session 存储库( session 存储类型为 'redis' )

testing - Windows 7 上的经典 ASP Web 服务器

apache - Apache 真的 "fork"以 mod_php/python 方式处理请求吗?

java - HSQLDB 不保存通过 Java 进行的更新

java - Spring选择所需的bean实现

java - 如何在基于 XML 的 Spring 配置文件中加载基于 Java 的 SecurityConfig?

linux - 如何在svn中提交文件并自动传输到多个应用服务器

reactjs - 刷新 react 应用程序,404 错误。 react 路由器问题

iis - 是否有可能减慢 IIS 的速度?