当前位置: 首页 > 知识库问答 >
问题:

导出JAR后的ClassNotFoundException

南门志
2023-03-14

我使用的是JRE 1.9.0(9.0.4+11)。我正在尝试创建一个可执行的JAR。在我用Maven导出到JAR并尝试启动它之后,我得到以下错误:

线程“JavaFX Application thread”java.lang.noClassDeFounderRror:com/sun/javafx/css/converters/sizeConverter在org.kordamp.ikonli.javafx.fonticon$StyleableProperties。(fonticon.java:265)在org.kordamp.ikonli.javafx.fonticon.getClassCSMetadata(fonticon.java:321)在org.kordamp.ikonli.javafx.fonticon.getClassCSMetadata(

...

原因:java.lang.ClassNotFoundException:com.sun.javafx.css.converters.sizeConverter在java.base/jdk.internal.loader.builtInclassLoader.LoadClass(未知源)在java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.LoadClass(未知源)在java.base/java.lang.ClassLoader.LoadClass(未知源)...103其他

这发生在我导出JAR的同一台机器上。它在从IDE启动时运行良好,我想我的IDE(Eclipse)在启动我的JAR时使用的JRE与Windows使用的JRE相同,因为它是我唯一安装的JAR。我在Maven中包含的库是Ikonli2.3.0和Jfoenix9.0.8。

我也尝试用Launch4J包装同一个JAR,但遇到了同样的问题。

这是从我的pom.xml文件构建的

  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.0</version>
        <configuration>
          <release>9</release>
        </configuration>
      </plugin>
            <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.2.3</version>
        <configuration>
          <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
              <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                    <mainClass>com.project.Main</mainClass>
                </transformer>
             </transformers>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <archive>
                        <manifest>
                        <addClasspath>true</addClasspath>
                            <mainClass>
                                com.project.Main
                            </mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
    </plugins>
  </build>

共有1个答案

华化
2023-03-14

这根本不是样式表错误,而是使用了不兼容的Ikonli版本。从堆栈跟踪中,我发现使用中的Ikonli版本可能低于11。JavaFX9与某些包存在二进制不兼容,例如CSS支持从私有包com.sun.JavaFX.CSS移到了公共包JavaFX.CSS

Ikonli目前有两个版本分支,2_x分支与JavaFX 8兼容(最新版本为2.6.0),主分支与JavaFX 11及更高版本兼容(最新版本为11.5.0)。

没有兼容Java9或10的版本。您必须选择Java8或Java11+。

 类似资料:
  • 问题内容: 我正在使用Eclipse并正在开发使用本地文件的Java应用程序。该文件在项目文件夹中的子文件夹中,称“ mydata / myfile.txt”。当我从eclipse运行应用程序时,一切正常,我打开一个FileInputStream并传递“ mydata / myfile.txt”作为名称,该文件为阅读就好了。但是,当我将应用程序导出为.jar并尝试运行它时,我得到的只是控制台中的F

  • 我正在使用Eclipse并开发一个java应用程序,在这个应用程序中,我使用了一个本地文件。该文件位于项目文件夹中的一个子文件夹中,比如“mydata/myfile.txt”。当我从eclipse运行应用程序时,一切正常,我打开一个FileInputStream,将“mydata/myfile.txt”作为名称传递,文件的读写也正常。但当我将应用程序导出为时。jar,并尝试运行它,我得到的只是控制

  • 我在下面的帖子中提到了这个问题和我的答案:来自Apache FOP 1.1和Java的PDF图像。我试图在每页上显示背景图像(有点像水印): 我让它在我的机器上从Eclipse和导出的jar中工作,如上面提到的帖子所述,但它不适用于我以外的机器。它总是说不支持该格式。 我正在使用 FOP 网站上的 FOP 1.1 罐子,并将它们全部添加到我的锁片中。也将它们与罐子一起导出。我没有解决方案的想法了。

  • 问题内容: 如何使用Netbeans将Java项目导出到JAR?我找不到类似Eclipse中的选项。 问题答案: 您需要启用该选项 (但默认情况下启用此功能)

  • 我有日蚀。 我可以用库导出jar(Export- 导出的libs放入projectName_libs文件夹。我可以为导出的库更改(在eclipse中)文件夹名吗?

  • 问题内容: 两个问题 1)将Java项目导出为JAR文件时,应用程序如何知道包中的哪个类首先运行?我的applicatino特别要求userInterface.java文件在CommonDenom.java文件之前运行。 2)运行Java文件时,出现错误消息“无法启动Java JAR文件“ commonDenom.jar”。请在控制台中查看可能的消息。” 我从哪里开始弄清楚这一点?我检查了控制台,