我使用Java API创建了一个简单的Web Server应用程序 Web服务器按预期工作,我可以在浏览器中获取HTML页面。
我正在Windows机器上开发这个Java App。为了测试我将我的应用程序导出为JAR,然后在目标设备上测试它,这是一个Linux Box。在我的应用程序中,我创建了一个“webroot”文件夹,我存储了Web服务器需要提供的所有HTML文件。
因此,当我创建应用程序的JAR文件时,它具有“webroot”文件夹,其中包含所有html文件。当我在Windows上运行此应用程序时,我能够获取html页面。但是当我在Linux机器上运行这个应用程序作为JAR时,我无法检索html文件。此外,当我在JAR外部复制我的“webroot”文件夹时,它可以工作,我能够看到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相同的文件夹中,那么它确实有效。
答案 0 :(得分:1)
如果不了解您实际上是如何提供内容的,那么很难说您做错了什么,但您始终可以使用Class.getResourceAsStream()
从类路径访问资源。如果您将其作为jar文件运行,那么jar文件的内容也包含在类路径中。
要提供jar文件之外的内容,要么在类路径中包含“webroot”,要么创建某种机制来首先尝试类路径,然后再尝试外部路径。