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

java.io.IOException:rsrc:application/application.bss错误的二进制CSS版本:5。预期版本小于或等于3,java,javafx,javafx-2,fxml,fxmlloader,Java,Javafx,Javafx 2,Fxml,Fxmlloader,我使用javafx创建了一个示例应用程序。由于网络中的某些限制,我无法在e(fx)clipse等处安装fxpackaging工具 我已经使用eclipse(版本4.5.1)创建了jar 当我在cmd中使用下面的命令执行jar文件时,应用程序运行得非常好 java -jar myjarfile.jar 问题1:(已解决) 我在“命令提示符”中观察到此异常 java.net.MalformedURLException: Coult not open InputStream for URL 'rs

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

我已经使用eclipse(版本4.5.1)创建了jar 当我在cmd中使用下面的命令执行jar文件时,应用程序运行得非常好

java -jar myjarfile.jar
问题1:(已解决) 我在“命令提示符”中观察到此异常

java.net.MalformedURLException: Coult not open InputStream for URL 
'rsrc:application/application.bss'
我使用以下命令创建了bss文件(在项目根级别执行)

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

问题2:(未解决) 初始异常已解决&我可以看到字体按预期显示。但在背景中,我可以看到下面的例外

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

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

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

.label{-fx-text-fill: black;}
→ 使用eclipse(JDK1.7)和windows创建的jar文件正在JRE 1.7.091上运行

css文件:如上所述的一行

bss文件

包结构


根据何塞·佩雷达的评论,我做了一个实验。我发现,如果我使用的是JRE 1.8,就不会发现这个问题

  • 命令提示符1:指向JRE 1.7.091→ 观察到上述例外情况
  • 命令提示符2:指向JRE 1.8.0\u 40→ 未观察到异常

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

    正如JoséPereda所说,bss是Java8上的版本5。根据for标签,语法是正确的。然而,这是针对Java8的,而您目前正在使用Java7。如果您有Java8,请配置eclipse并设置使用它的构建路径,并相应地将
    path
    变量设置为Java8

    如果问题仍然存在,请执行以下操作: 如果它在更新后仍然不工作,我们将尝试以稍微不同的方式编译它,看看会发生什么。根据,一旦编译了
    .bss
    文件,就不需要
    .css
    文件

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

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

    继续前进,您必须在测试文件夹中打开一个命令窗口。您可以通过按住SHIFT键并在Windows资源管理器上的
    test
    文件夹中单击鼠标右键,然后单击此处的
    打开命令窗口

    在此之后,在新打开的commnd提示符窗口中键入以下内容,编译
    Main.java

    javac Main.java
    
    接下来,复制
    appication.css
    ,但将其重命名为
    Main.css
    ,以便进行测试。然后,在命令提示符窗口中运行此命令(您没有
    -outfile
    参数;这不重要,但这是一个轻微的安全措施):

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

    java Main
    

    如果这个答案对你有帮助,请留下评论,如果这个答案确实对你有帮助,请说明你实际上使用了这个答案的哪一部分来解决问题,谢谢

    您可以发布您的JDK版本吗:用于创建项目的版本,bss文件,以及您正在运行项目的版本(
    java-version
    )?@JoséPereda,使用eclipse创建的Jar文件(具有JDK 1.7)以及使用windows JRE 1.7.0版创建的application.bss。我们能看到导致此异常的bss文件吗?@Abob78,我的问题附有图片。出于测试目的,我只在*.css文件中添加了一个标签。您是否安装了JDK8?请确保您没有使用它。Bss级别5来自JDK8,因此您无法运行JDK8来解决此问题。问题仍然是:您从哪里运行javafxpackager?@JoséPereda,这是一个很好的发现。我认为,这是问题的根本原因。虽然JRE指向1.7目录,但当我运行
    where javafxpacker.exe
    时,它指向的是JDK 1.8目录。请确保从JDK7发行版运行它,然后再次检查,如果它有效,我将编写一个正确的answer@Jos佩雷达,我的系统jdk1.6.0_31、jdk1.6.0_39、jdk1.7.0_25、jdk1.8.0_40中都有这些java版本,jdk1.8.0_51,jre7。不幸的是,javafxpacker.exe仅在jdk1.8(2个目录)中可用。此实用程序应在JRE1.7及更高版本中工作。这可能吗?JDK 1.7.0_65到最新的1.7.0_79都有javafxpackager。您可能需要升级JDK7版本。我想在完成此问题的手续之前解决我的问题;)我已经安装了JDK1.7.0_76,不幸的是它没有生成任何bss文件。它甚至没有显示任何错误。我将尝试使用JDK 1.7.0_79并让您知道我的发现。使用JDK 1.7.0_95进行测试时,javafxpackager没有抛出任何错误,也没有创建任何文件:(packager似乎不工作。看起来javafxpackager有一个bug,但找到了根本原因,因此我将奖励。谢谢@Abob78
    javafxpackager -createbss -srcfiles Main.css -outdir . -outfile Main
    
    java Main