ikonli icon indicating copy to clipboard operation
ikonli copied to clipboard

NullPointerException using modular approach

Open wunmiji opened this issue 3 years ago • 3 comments

Saw this error when using ikonli-icons with modular approach in a simple javafx application.

modular.info

module com.example {

    requires javafx.base;
    requires javafx.controls;
    requires javafx.fxml;
    requires javafx.graphics;
    requires javafx.web;
    requires org.kordamp.iconli.core;
    requires org.kordamp.ikonli.javafx;
    requires org.kordamp.ikonli.entypo;

    opens com.example.controller.login to javafx.fxml;
    exports com.example.controller.login;
}

pom.xml

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.release>11</maven.compiler.release>
        <javafx.version>11.0.1</javafx.version>
        <javafx.maven.plugin.version>0.0.4</javafx.maven.plugin.version>
        <ikonli.version>11.0.0</ikonli.version>
        <mainClass>com.example.controller.login.Launcher</mainClass>
    </properties>

    <!-- https://mvnrepository.com/artifact/org.kordamp.ikonli/ikonli-core -->
        <dependency>
            <groupId>org.kordamp.ikonli</groupId>
            <artifactId>ikonli-core</artifactId>
            <version>${ikonli.version}</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.kordamp.ikonli/ikonli-javafx -->
        <dependency>
            <groupId>org.kordamp.ikonli</groupId>
            <artifactId>ikonli-javafx</artifactId>
            <version>${ikonli.version}</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.kordamp.ikonli/ikonli-entypo-pack -->
        <dependency>
            <groupId>org.kordamp.ikonli</groupId>
            <artifactId>ikonli-entypo-pack</artifactId>
            <version>${ikonli.version}</version>
        </dependency>

example.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.AnchorPane?>
<?import org.kordamp.ikonli.javafx.FontIcon?>

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <Button contentDisplay="GRAPHIC_ONLY" layoutX="214.0" layoutY="159.0" mnemonicParsing="false" prefHeight="117.0"  prefWidth="173.0">
         <graphic>
            <FontIcon iconLiteral="enty-beamed-note" iconSize="70" />
         </graphic>
      </Button>
   </children>
</AnchorPane>

Console output

[INFO] 
[INFO] --- javafx-maven-plugin:0.0.4:run (default-cli) @ Example ---
java.lang.NullPointerException
	at javafx.graphics/com.sun.javafx.font.directwrite.DWGlyph.createBitmap(DWGlyph.java:287)
	at javafx.graphics/com.sun.javafx.font.directwrite.DWGlyph.getCachedBitmap(DWGlyph.java:273)
	at javafx.graphics/com.sun.javafx.font.directwrite.DWGlyph.getD2DMask(DWGlyph.java:167)
	at javafx.graphics/com.sun.javafx.font.directwrite.DWGlyph.getPixelData(DWGlyph.java:352)
	at javafx.graphics/com.sun.prism.impl.GlyphCache.getCachedGlyph(GlyphCache.java:258)
	at javafx.graphics/com.sun.prism.impl.GlyphCache.render(GlyphCache.java:148)
	at javafx.graphics/com.sun.prism.impl.ps.BaseShaderGraphics.drawString(BaseShaderGraphics.java:2101)
	at javafx.graphics/com.sun.javafx.sg.prism.NGText.renderText(NGText.java:312)
	at javafx.graphics/com.sun.javafx.sg.prism.NGText.renderContent2D(NGText.java:270)
	at javafx.graphics/com.sun.javafx.sg.prism.NGShape.renderContent(NGShape.java:261)
	at javafx.graphics/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072)
	at javafx.graphics/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964)
	at javafx.graphics/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:270)
	at javafx.graphics/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:578)
	at javafx.graphics/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072)
	at javafx.graphics/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964)
	at javafx.graphics/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:270)
	at javafx.graphics/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:578)
	at javafx.graphics/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072)
	at javafx.graphics/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964)
	at javafx.graphics/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:270)
	at javafx.graphics/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:578)
	at javafx.graphics/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072)
	at javafx.graphics/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964)
	at javafx.graphics/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:270)
	at javafx.graphics/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:578)
	at javafx.graphics/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072)
	at javafx.graphics/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964)
	at javafx.graphics/com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:479)
	at javafx.graphics/com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:328)
	at javafx.graphics/com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:91)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
	at javafx.graphics/com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
	at java.base/java.lang.Thread.run(Thread.java:829)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

wunmiji avatar Jul 15 '21 17:07 wunmiji

Please update to latest Ikonli version 12.2.0 and try again. Note that the module names were updated in version 12.0.0 -> https://github.com/kordamp/ikonli/issues/59

aalmiray avatar Jul 15 '21 17:07 aalmiray

Have done it...but the error is only for modular and not non-modular Here is quick and simple example https://github.com/wunmiji/Ikonli-icons-12.2.0-modular-exmaple

Please preview sir if am not doing the right thing in modular

wunmiji avatar Jul 16 '21 06:07 wunmiji

@wunmiji I cloned https://github.com/wunmiji/Ikonli-icons-12.2.0-modular-exmaple (at commit 4858a65c003073662b36eaeff5b23d81e66408a6) and can't replicate the problem.

$ mvn verify
$ mvn javafx:run

The application is successfully launched and displays an icon at the center.

aalmiray avatar Jul 17 '21 19:07 aalmiray