Java FlatLAF的奇怪问题-java.lang.Error:JLabel没有ComponentUI类

问题描述

我已经在Netbeans 12.1中创建了一个基于Maven的Java Swing项目。我在pom.xml中添加了一些依赖项:

com.formdev.flatlaf 0.43
com.formdev.flatlaf-swingx 0.43
com.formdev.flatlaf-extras 0.43

我以这样的主要形式初始化flatlaf的使用:

public static void main(String args[]) {
    FlatLightLaf.install(); 
}

当我在Netbeans中启动程序时,一切运行正常。 Netbeans使用此命令来运行程序:

cd /Users/rene/htdocs/my-program; JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk- 
12.0.1.jdk/Contents/Home "/Applications/NetBeans/Apache NetBeans 
12.1.app/Contents/Resources/NetBeans/netbeans/java/maven/bin/mvn" "-Dexec.args=-classpath 
%classpath de.renepoepperl.my-program.Login" - 
Dexec.executable=/Library/Java/JavaVirtualMachines/jdk-12.0.1.jdk/Contents/Home/bin/java 
org.codehaus.mojo:exec-maven-plugin:1.5.0:exec

但是,当我“使用依赖项”构建程序并尝试运行java -jar my-program.jar时,出现多个错误java.lang.Error: no ComponentUI class for

我想,flatlaf缺少某些配置。但是我不知道为什么。

如何使flatlaf工作?

解决方法

如果通过混淆或其他类最小化工具(例如Maven Shade Plugin)将FlatLaf类重命名,则会发生这种情况。

请参见https://github.com/JFormDesigner/FlatLaf/issues/104

检查jar是否包含flatlaf.jar中的所有文件。