Поставщик org.controlsfx.glyphfont.FontAwesome не может быть создан - PullRequest
0 голосов
/ 05 апреля 2020

Когда я пытаюсь использовать FontAwesome из ControlsFX , мое приложение вылетает с ошибкой:

Caused by: java.util.ServiceConfigurationError: org.controlsfx.glyphfont.GlyphFont: Provider org.controlsfx.glyphfont.FontAwesome could not be instantiated

В f xml я использую его, как показано ниже:

<Button prefHeight="120" prefWidth="120">
    <graphic>
        <Glyph fontFamily="FontAwesome" icon="PLUS" />
    </graphic>
</Button>

И мой build.gradle :

plugins {
    id 'java-library'
    id 'org.openjfx.javafxplugin' version '0.0.8'
    id "edu.sc.seis.macAppBundle" version "2.1.0"
}

group 'xxx'
version '1.0-SNAPSHOT'

javafx {
    version = '14'
    modules("javafx.controls", "javafx.fxml")
}

macAppBundle {
    mainClassName = "com.xxx.App"
    icon = "myIcon.icns"
    bundleJRE = true
    javaProperties.put("apple.laf.useScreenMenuBar", "true")
    backgroundImage = "doc/macbackground.png"
}

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.controlsfx:controlsfx:11.0.1'
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

Как это исправить? Я проверил controlsfx содержит fontawesome-webfong.ttf .

Трассировка стека:

main.fxml:45

    at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2625)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2603)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2466)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3237)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3194)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3163)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3136)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3113)
    at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3106)
    at com.xxx.App.start(App.java:20)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
    at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at javafx.fxml/com.sun.javafx.fxml.BeanAdapter.put(BeanAdapter.java:262)
    at javafx.fxml/com.sun.javafx.fxml.BeanAdapter.put(BeanAdapter.java:54)
    at javafx.fxml/javafx.fxml.FXMLLoader$Element.applyProperty(FXMLLoader.java:520)
    at javafx.fxml/javafx.fxml.FXMLLoader$Element.processValue(FXMLLoader.java:370)
    at javafx.fxml/javafx.fxml.FXMLLoader$Element.processPropertyAttribute(FXMLLoader.java:332)
    at javafx.fxml/javafx.fxml.FXMLLoader$Element.processInstancePropertyAttributes(FXMLLoader.java:242)
    at javafx.fxml/javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:775)
    at javafx.fxml/javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2838)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2557)
    ... 14 more
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:76)
    at jdk.internal.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at javafx.base/com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:273)
    at javafx.fxml/com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:83)
    at javafx.fxml/com.sun.javafx.fxml.ModuleHelper.invoke(ModuleHelper.java:98)
    at javafx.fxml/com.sun.javafx.fxml.BeanAdapter.put(BeanAdapter.java:258)
    ... 22 more
Caused by: java.util.ServiceConfigurationError: org.controlsfx.glyphfont.GlyphFont: Provider org.controlsfx.glyphfont.FontAwesome could not be instantiated
    at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:584)
    at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:806)
    at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:724)
    at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1396)
    at org.controlsfx.glyphfont.GlyphFontRegistry.<clinit>(GlyphFontRegistry.java:67)
    at org.controlsfx.glyphfont.Glyph.setFontFamily(Glyph.java:250)
    ... 34 more
Caused by: java.lang.ExceptionInInitializerError
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
    at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:782)
    ... 38 more
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make public static com.sun.javafx.css.StyleManager com.sun.javafx.css.StyleManager.getInstance() accessible: module javafx.graphics does not "exports com.sun.javafx.css" to unnamed module @55340952
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:349)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:289)
    at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:196)
    at java.base/java.lang.reflect.Method.setAccessible(Method.java:190)
    at impl.org.controlsfx.ReflectionUtils.addUserAgentStylesheet(ReflectionUtils.java:225)
    at org.controlsfx.glyphfont.GlyphFont.<clinit>(GlyphFont.java:57)
    ... 44 more
...