Ribbon fails to load due to lack of java.lang.Float interpolator

Issue #55 duplicate
Chris Heidt created an issue

I have this happen every couple of launches.

java.lang.IllegalArgumentException: No interpolator found for java.lang.Float:java.lang.Float
    at org.pushingpixels.trident.TimelinePropertyBuilder.getFieldInfo(TimelinePropertyBuilder.java:257)
    at org.pushingpixels.trident.Timeline.addPropertyToInterpolate(Timeline.java:353)
    at org.pushingpixels.trident.Timeline.addPropertyToInterpolate(Timeline.java:363)
    at org.pushingpixels.flamingo.internal.ui.ribbon.BasicRibbonBandUI.installUI(BasicRibbonBandUI.java:168)
    at javax.swing.JComponent.setUI(JComponent.java:664)
    at org.pushingpixels.flamingo.api.ribbon.AbstractRibbonBand.setUI(AbstractRibbonBand.java:232)
    at org.pushingpixels.flamingo.api.ribbon.AbstractRibbonBand.updateUI(AbstractRibbonBand.java:243)
    at org.pushingpixels.flamingo.api.ribbon.AbstractRibbonBand.<init>(AbstractRibbonBand.java:205)
    at org.pushingpixels.flamingo.api.ribbon.JRibbonBand.<init>(JRibbonBand.java:169)
    at com.terramenta.ribbon.RibbonComponentFactory.createRibbonBand(RibbonComponentFactory.java:398)
    at com.terramenta.ribbon.RibbonComponentFactory.createRibbonBand(RibbonComponentFactory.java:382)
    at com.terramenta.ribbon.RibbonComponentFactory.createRibbonBandsWithPopups(RibbonComponentFactory.java:316)
    at com.terramenta.ribbon.RibbonComponentFactory.createRibbonTask(RibbonComponentFactory.java:274)
    at com.terramenta.ribbon.LayerRibbonComponentProvider.addTaskPanes(LayerRibbonComponentProvider.java:131)
    at com.terramenta.ribbon.LayerRibbonComponentProvider.createRibbon(LayerRibbonComponentProvider.java:60)
    at com.terramenta.ribbon.Installer$1.run(Installer.java:67)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
[catch] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Comments (6)

  1. Bruce Schubert

    I've chased this problem around in WMT with no definitive resolution yet. Here's what I know so far.

    At the root of the issue, it appears the TridentConfig() constructor invoked by TridentConfig.getInstance() fails to find the property resources defined in the following code block:

        private TridentConfig() {
            this.pulseSource = new DefaultPulseSource();
    
            this.uiToolkitHandlers = new HashSet<UIToolkitHandler>();
            this.propertyInterpolators = new HashSet<PropertyInterpolator>();
            ClassLoader classLoader = Thread.currentThread()
                    .getContextClassLoader();
            try {
                Enumeration urls = classLoader
                        .getResources("META-INF/trident-plugin.properties");
                while (urls.hasMoreElements()) {
    

    Here are a number of observations:

    • The ribbons that fail are all declared as .instance object in the XML layer
    • The ribbons that fail are all JavaFX ribbons
    • When the problem occurs, I also note that the splash screen is displayed with transparency enabled (?!?!?)
    • In the IDE after changing a module, running the app without a complete clean/rebuild will manifest the problem.
    • A complete clean/rebuild of the application will avoid the problem.

    Possible clue: I remember reading an obscure comment in the Trident code: if the main timeline object is handled by a UI toolkit handler, the setters registered with the different addProperty APIs need to run with the matching threading policy.

  2. Log in to comment