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

将简单Web服务器导出为JAR的Java应用程序,java,webserver,Java,Webserver,我使用Java API创建了一个简单的Web服务器应用程序。 Web服务器按预期工作,我能够在浏览器中获取HTML页面 我正在Windows机器上开发这个Java应用程序。为了进行测试,我将我的应用程序导出为JAR,然后在目标设备(Linux机器)上进行测试。在我的应用程序中,我创建了一个“webroot”文件夹,并存储了web服务器需要服务的所有HTML文件 因此,当我创建应用程序的JAR文件时,它有一个“webroot”文件夹,其中包含所有html文件。当我在Windows上运行此应用程序时

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

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

因此,当我创建应用程序的JAR文件时,它有一个“webroot”文件夹,其中包含所有html文件。当我在Windows上运行此应用程序时,我就能够获得html页面。但是,当我在LinuxBox上作为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”,或者创建某种机制,先尝试类路径,然后尝试外部路径。

您可以发布项目文件夹层次结构。请查看我更新的问题。您可以使用此.getClass().getClassLoader().getResourceAsStream(文件名)访问它;