我在将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文件是否丢失,但一切正常。 那么我遇到的问题是什么?
答案 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
我真不知道为什么......