我使用javafx创建了一个示例应用程序。由于我网络中的某些限制,我无法在e(fx)clipse等安装fxpackaging工具。
我使用eclipse创建了jar(版本4.5.1) 当我使用cmd
中的以下命令执行jar文件时,应用程序工作正常java -jar myjarfile.jar
我在'命令提示符'
中观察到了这个异常java.net.MalformedURLException: Coult not open InputStream for URL
'rsrc:application/application.bss'
我使用下面的命令创建了bss文件(在项目根级别执行)
javafxpackager -createbss -srcfiles application.css -outdir .
然后将输出bss文件复制到正确的位置(程序除了位于特定文件夹的资源)。
初步例外已经解决&我可以看到字体按预期显示。但在后台我可以看到以下异常
java.io.IOException:rsrc:application / application.bss错误的二进制CSS 版本:5。预期版本小于或等于3
如何解决这个'错误的二进制CSS版本'异常(在命令提示符中显示)? 请注意,我没有看到在前台运行的应用程序有任何问题。
出于测试目的,我在application.css文件中使用了单线样式代码
.label{-fx-text-fill: black;}
→使用eclipse创建的jar文件(JDK 1.7)& Windows正在JRE 1.7.0_91上运行
css文件:如上所述的一个班轮
包结构
答案 0 :(得分:2)
正如JoséPereda所说,bss是Java 8的第5版。基于JavaFX 8 CSS Reference Guide标签,语法是正确的。但是,这适用于Java 8,而您当前正在使用Java 7.如果您使用的是Java 8,请配置eclipse并设置构建路径以使用它并将PATH
变量相应地设置为Java 8.
如果在更新后它仍无法正常工作,我们会尝试稍微不同地编译它,看看会发生什么。根据{{3}},编译.css
文件后,您不需要.bss
文件。
在易于访问的某处创建Test
文件夹。我们将使用它来查看单独编译的文件将如何影响异常,因为此时更新Java没有做任何事情。
首先,尝试使用基本文件运行程序。如果您的Main.java
文件不依赖于项目中的其他java文件,则将该文件复制到我们最近创建的test
文件夹中。如果没有,请仅复制使用css
的必要部分(例如调用css file
的场景和标签),并将其粘贴到新{{1}中的新Main.java
中文件夹。
继续前进,您将不得不在测试文件夹中打开命令窗口。您可以通过在Windows资源管理器的test
文件夹中按SHIFT + RIGHT CLICK并单击test
在此之后,通过在新打开的提交提示窗口中键入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
如果这个答案确实帮助了您,请提供评论,如果这有助于您以及您实际用于解决问题的答案的哪一部分,谢谢!
答案 1 :(得分:0)
根据JoséPereda的评论,Abob78我做了一个实验。我已经弄清楚了,如果我使用JRE 1.8
,就不会出现问题两者同时运行&使用相同的JAR文件。