将jar上的本地html文件加载到Web引擎

时间:2016-05-28 15:03:35

标签: java intellij-idea

我在将HTML文件加载到我的应用程序到我的网络引擎时遇到了问题。

目前,如果我运行我的应用程序抛出IntelliJ IDE。 HTML页面正确加载!但是当我创建项目并将应用程序运行到终端时。 HTML文件根本没有被加载。

我将HTML页面加载到我的网络引擎的代码。

WebEngine we = wv.getEngine();
we.setJavaScriptEnabled(true);
String htmlFile = getClass().getResource("/html/index.html").toExternalForm();
System.out.println(">>>"+htmlFile);
we.load(htmlFile);

为什么我有我的println?检查我的HTML页面的路径。 似乎当我在我的项目IntelliJ上运行它时。应用程序运行正常。如下所示:

>>>file:/Developer/Liss-SDE/out/production/liss/html/index.html

但是当我在终端上做的时候。它给我打印了一些我不理解的东西。

>>>jar:file:/Users/damien/Desktop/liss%7cSDE/liss.jar!/html/index.html

为什么它在开头放一个 jar:?另外他为什么要把添加到我的程序 .jar ?如果我们与其他印刷品进行比较,那就完全不同了!

我解压缩.jar文件以检查目录和HTML文件是否丢失,但一切正常。 那么我遇到的问题是什么?

2 个答案:

答案 0 :(得分:4)

jar:!的文件名是JAR中文件的URL,如JarURLConnection中所定义。在此上使用getResource()正确显示文件。使用getResourceAsStream()访问文件内容,这在您的情况下应该足够了。

您还可以使用java jar API直接访问jar的内容。这个java2s tutorial page有几个例子,有一个很好的介绍。对于类路径中的jar(这次似乎就是这种情况),jar API会在getResource()的{​​{1}}和getResourceAsStream()方法中自动使用。

从Java 7开始,FileSystem api已经可用并隐藏了一些更尴尬的细节。这个Oracle technote简要介绍了API以及如何使用它。

该页面的片段,调整到您的案例:

Class

答案 1 :(得分:1)

所以我设法解决了这个问题......

我认为这真是一件奇怪的事......

如果我将所有代码折叠到Web引擎的加载中,一切正常......

<强>叹息

我希望未来的冒险家不会有这个问题,因为我得到了...

只需这样做:

we.load(this.getClass().getResource("/html/index.html").toExternalForm());

我不知道它是不是一个bug ...因为我没有改变我的项目,除非把这行代码...

感谢Paul Hicks试图帮助我:)。

但是我发现了一个错误! XD

因此,如果我用鼠标点击我的.jar,应用程序运行正常!但是如果我通过写java -jar liss.jar来运行.jar抛出我的终端,那么看起来该应用程序不起作用!的xD 我真不知道为什么......