JavaFXWebEngine从jar加载html文件

JavaFXWebEngine从jar加载html文件,javafx,javafx-webengine,Javafx,Javafx Webengine,我正在构建一个项目,需要使用WebEngine类。所以我有两个项目,MainA和SecondB。SecondB项目依赖于MainA,因此在构建它之后,SecondB将成为MainAlibs文件夹中的jar文件。 现在。我需要打开abc.html文件,该文件位于SecondB参考资料下。当在本地测试它时,它工作,当构建应用程序并在服务器上部署它时,它失败(可能是因为它在SecondBjar文件中)。所以我使用的代码是: 方法classLoader.getResource(“subfolder/a

我正在构建一个项目,需要使用WebEngine类。所以我有两个项目,
MainA
SecondB
SecondB
项目依赖于
MainA
,因此在构建它之后,
SecondB
将成为
MainA
libs文件夹中的jar文件。
现在。我需要打开
abc.html
文件,该文件位于
SecondB
参考资料下。当在本地测试它时,它工作,当构建应用程序并在服务器上部署它时,它失败(可能是因为它在
SecondB
jar文件中)。所以我使用的代码是:

方法
classLoader.getResource(“subfolder/abc.html”).toExternalForm()在本地运行代码时返回一个正常url,类似于:

你知道如何从jar加载这个文件吗?我尝试了在SO上找到的几个选项,但没有成功

您可以创建一个“资源”包并将您的文件复制到此包中,对于访问您的文件路径(例如html),您可以使用以下命令:
getClass().getResource(“/resources/abc.html”).toURI().toString()
这提供了在您创建的jar中获取您的文件url的方法。希望它有用。

对我来说,我做到了这一点

String fileloc = "/docs/help/userguide.html";
...
String fullLink = getClass().getResource(fileloc).toExternalForm();
...
我将html文件存储在resources文件夹中。e、 g./resources/docs/help/userguide.html


当我运行编译后的jar时,它被javafx webengine加载是没有问题的。

我想你差不多做到了,你可以通过
InputStream
将url读入
String
,然后使用
webengine.loadContent
加载
字符串
内容,前提是你只想显示一个页面。如果您的页面引用了其他文件(javascript/css),它将无法工作


因此,最好这样做,在启动JavaFX应用程序时,将整个资源文件夹复制到本地文件系统中,然后使用
WebEngine
加载HTML文件,这样应该会更好。

我的SecondB项目中已经有一个资源包,文件就在那里。或者你的意思是把它放在资源下的主要项目中?我考虑过这一点,但老实说,我不喜欢这个解决方案。
/resources
子目录是多余的,除非您希望这样。但是
/resource
中通常有许多子目录。所以我推荐
…getResource(“/doc/abc.html”)
,等将.html文件放在同一个resources文件夹中,然后创建一个jar文件。你是在主项目的resources文件夹中吗?是的,据我所知,它们需要在同一个文件夹中才能打包到jar文件中
file:jar:C:/Something/MainA/libs/SecondB.jar!/subfolder/abc.html
String fileloc = "/docs/help/userguide.html";
...
String fullLink = getClass().getResource(fileloc).toExternalForm();
...