3

我使用 javafx 创建了一个示例应用程序。由于网络中的某些限制,我无法安装 e(fx)clipse 等 fxpackaging 工具。

当我在 cmd 中使用以下命令执行 jar 文件时,我使用 eclipse(4.5.1 版)应用程序创建了 jar

java -jar myjarfile.jar

问题1:(已解决)

我在“命令提示符”中观察到了这个异常

java.net.MalformedURLException: Coult not open InputStream for URL 
'rsrc:application/application.bss'

我使用以下命令创建了 bss 文件(在项目根级别执行)

javafxpackager -createbss -srcfiles application.css -outdir .

然后将输出 bss 文件复制到适当的位置(程序除了位于特定文件夹的资源)。

问题2:(未解决)

初始异常已解决,我可以看到字体按预期显示。但在后台我可以看到下面的异常

java.io.IOException: rsrc:application/application.bss 错误的二进制 CSS 版本:5。预期版本小于或等于 3

问题:

如何修复此“错误的二进制 CSS 版本”异常(显示在命令提示符中)?请注意,我没有看到在前台运行的应用程序有任何问题。

出于测试目的,我在 application.css 文件中使用了单行样式代码

.label{-fx-text-fill: black;}

→ 使用 eclipse (JDK 1.7) & windows 创建的 jar 文件在 JRE 1.7.0_91 上运行

css 文件:如上所述的一个衬垫

css 文件

bss 文件 bss 文件

封装结构

包裹

4

2 回答 2

2

正如 José Pereda 所说,bss 是 Java 8 上的第 5 版。基于标签的JavaFX 8 CSS 参考指南,语法是正确的。但是,这适用于 Java 8,而您当前使用的是 Java 7。如果您有 Java 8,请配置 eclipse 并设置构建路径以使用它,并将您的PATH变量相应地设置为 Java 8。

如果问题仍然存在:

如果更新后它仍然无法工作,我们将尝试稍微不同地编译它,看看会发生什么。根据这篇文章.css,编译文件后就不需要该.bss文件。

Test在易于访问的地方创建一个文件夹。我们将使用它来查看单独编译的文件将如何影响异常,因为此时更新 Java 没有做任何事情。

首先,尝试使用基本文件运行程序。如果您的Main.java文件不依赖于项目中的其他 java 文件,则将该文件复制到test我们最近创建的文件夹中。如果没有,请仅复制使用 的必要部分css(例如调用 的场景和标签css file),并将其粘贴到新文件夹Main.java中的新test文件夹中。

继续前进,您将不得不在您的测试文件夹中打开一个命令窗口。test您可以通过在 Windows 资源管理器的文件夹中按 SHIFT + RIGHT CLICK并单击Open command window here

在此之后,Main.java通过在新打开的命令提示符窗口中键入以下内容进行编译:

javac Main.java

接下来,出于测试目的,复制appication.css但重命名为 。Main.css然后,在命令提示符窗口中运行它(你没有-outfile争论;这应该没关系,但这是一个轻微的安全措施):

javafxpackager -createbss -srcfiles Main.css -outdir . -outfile Main

现在你应该看到你有Main.css. 现在,使用相同的命令窗口,您可以轻松地运行该文件并查看会发生什么。

java Main

如果这对您有帮助,请发表评论,如果此答案对您有帮助,您实际使用了该答案的哪一部分来解决问题,谢谢!

于 2016-03-15T01:31:48.483 回答
0

根据 José Pereda, Abob78 的评论,我做了一个实验。我已经发现,如果我使用 JRE 1.8,则不会观察到该问题

  1. 命令提示符 1:指向 JRE 1.7.0_91 → 观察到上述异常
  2. 命令提示符 2:指向 JRE 1.8.0_40 →未观察到异常。

两者同时运行并使用相同的 JAR 文件。

于 2016-03-15T00:53:11.840 回答