Skip to content

NPE when extending SignalListItemFactory in 1.12.0 #212

@JFronny

Description

@JFronny

When updating to this new version, java-gi tries to register my custom SignalListItemFactory classes.
However, it fails to find a memory layout (Types.getLayout) for SignalListItemFactory (neither a @Layout method nor a getMemoryLayout method exist for it), which causes the automated registration of my classes to fail.
This then causes any constructor invocation to fail, since these now use newGObject with my extended class.

Stacktrace for the suppressed Exception in Types.getLayout:

java.lang.NoSuchMethodException: org.gnome.gtk.SignalListItemFactory$SignalListItemFactoryClass.getMemoryLayout()
	at java.base/java.lang.Class.getDeclaredMethod(Class.java:2424)
	at io.github.jwharm.javagi.gobject.types.Types.getLayout(Types.java:863)
	at io.github.jwharm.javagi.gobject.types.Types.generateClassLayout(Types.java:762)
	at io.github.jwharm.javagi.gobject.types.Types.register(Types.java:1210)
	at io.github.jwharm.javagi.gobject.types.TypeCache.getType(TypeCache.java:190)
	at io.github.jwharm.javagi.gobject.types.Types.register(Types.java:1204)
	at io.github.jwharm.javagi.gobject.types.TypeCache.getType(TypeCache.java:190)
	at io.github.jwharm.javagi.gobject.InstanceCache.newGObject(InstanceCache.java:362)
	at org.gnome.gtk.SignalListItemFactory.<init>(SignalListItemFactory.java:109)
	at io.gitlab.jfronny.inceptum.gtk.control.KSignalListItemFactory.<init>(KSignalListItemFactory.kt:10)
	at io.gitlab.jfronny.inceptum.gtk.control.InstanceListEntryFactory.<init>(InstanceListEntryFactory.kt:24)
	at io.gitlab.jfronny.inceptum.gtk.window.MainWindow.<init>(MainWindow.kt:74)
	at io.gitlab.jfronny.inceptum.gtk.GtkMain.showGui$lambda$2(GtkMain.kt:44)
	at io.gitlab.jfronny.inceptum.gtk.GtkMain.setupApplication$lambda$4(GtkMain.kt:61)
	at org.gnome.gio.Application$ActivateCallback.upcall(Application.java:2151)
	at org.gnome.gio.Application.run(Application.java:1151)
	at io.gitlab.jfronny.inceptum.gtk.GtkMain.setupApplication(GtkMain.kt:63)
	at io.gitlab.jfronny.inceptum.gtk.GtkMain.showGui(GtkMain.kt:35)
	at io.gitlab.jfronny.inceptum.gtk.GtkMain.main(GtkMain.kt:27)

Stacktrace for the exception this causes in the constructor plus related logs:

09:08:12.279 main java-gi ERROR <unknown>: Cannot register type KSignalListItemFactory: java.lang.NullPointerException: No memory layout for class SignalListItemFactoryClass

09:08:12.280 main java-gi ERROR <unknown>: Cannot register type InstanceListEntryFactory: java.lang.NullPointerException: No TypeClass for class InstanceListEntryFactory

09:08:12.281 main java-gi ERROR <unknown>: Cannot register type KSignalListItemFactory: java.lang.NullPointerException: No memory layout for class SignalListItemFactoryClass

09:08:12.282 main java-gi ERROR <unknown>: Cannot register type InstanceListEntryFactory: java.lang.NullPointerException: No TypeClass for class InstanceListEntryFactory

java.lang.AssertionError: java.lang.NullPointerException: Cannot invoke "org.gnome.glib.Type.getValue()" because "objectType" is null
	at io.github.jwharm.javagi.gobject.InstanceCache.newGObject(InstanceCache.java:372)
	at org.gnome.gtk.SignalListItemFactory.<init>(SignalListItemFactory.java:109)
	at io.gitlab.jfronny.inceptum.gtk.control.KSignalListItemFactory.<init>(KSignalListItemFactory.kt:10)
	at io.gitlab.jfronny.inceptum.gtk.control.InstanceListEntryFactory.<init>(InstanceListEntryFactory.kt:24)
	at io.gitlab.jfronny.inceptum.gtk.window.MainWindow.<init>(MainWindow.kt:74)
	at io.gitlab.jfronny.inceptum.gtk.GtkMain.showGui$lambda$2(GtkMain.kt:44)
	at io.gitlab.jfronny.inceptum.gtk.GtkMain.setupApplication$lambda$4(GtkMain.kt:61)
	at org.gnome.gio.Application$ActivateCallback.upcall(Application.java:2151)
	at org.gnome.gio.Application.run(Application.java:1151)
	at io.gitlab.jfronny.inceptum.gtk.GtkMain.setupApplication(GtkMain.kt:63)
	at io.gitlab.jfronny.inceptum.gtk.GtkMain.showGui(GtkMain.kt:35)
	at io.gitlab.jfronny.inceptum.gtk.GtkMain.main(GtkMain.kt:27)
Caused by: java.lang.NullPointerException: Cannot invoke "org.gnome.glib.Type.getValue()" because "objectType" is null
	at io.github.jwharm.javagi.gobject.InstanceCache.newGObject(InstanceCache.java:365)
	... 11 more
Unrecoverable uncaught exception encountered. The VM will now exit

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions