Странная проблема с Java FlatLAF — java.lang.Ошибка: нет класса ComponentUI для JLabel

#java #maven #swing #netbeans

#java #maven #swing #netbeans

Вопрос:

Я создал проект Java Swing на основе maven в Netbeans 12.1. Я добавил некоторые зависимости в 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 работать?

Ответ №1:

Это происходит в случае, если классы FlatLaf были переименованы с помощью запутывания или других инструментов минимизации классов (например, плагина Maven Shade).

См . https://github.com/JFormDesigner/FlatLaf/issues/104

Проверьте, содержит ли jar все файлы из flatlaf.jar .