我使用的是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>
这根本不是样式表错误,而是使用了不兼容的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”。请在控制台中查看可能的消息。” 我从哪里开始弄清楚这一点?我检查了控制台,