Thanks for this super cool software. I just gave it a try, and when it starts it prints an error message Unable to load system fonts, no directory is readable:
And the console shows:
$ ./PDF4Teachers
WARNING: Unknown module: PDF4Teachers.master.merged.module specified to --add-reads
WARNING: Unknown module: PDF4Teachers.master.merged.module specified to --add-exports
01:58:15.424 INFO Main main() Starting PDF4Teachers 1.4.4 | Java 21.0.4 on JFX 22+30 (amd64) on Linux 6.12.32
01:58:15.427 INFO Main main() Run mode: release | Log level: info
(PDF4Teachers:166841): Gdk-WARNING **: 13:58:16.033: XSetErrorHandler() called with a GDK error trap pushed. Don't do that.
01:58:16.510 INFO SystemFontsMapper loadFontsFromSystemFiles() Indexing system fonts... (325 fonts)
01:58:16.515 CONSOLE [ERROR] Exception in thread "System fonts loader" 01:58:16.517 CONSOLE [ERROR] java.lang.IllegalStateException: Not on FX application thread; currentThread = System fonts loader
01:58:16.517 CONSOLE [ERROR] at javafx.graphics@22/com.sun.javafx.tk.Toolkit.checkFxUserThread(Unknown Source)
01:58:16.517 CONSOLE [ERROR] at javafx.graphics@22/com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(Unknown Source)
01:58:16.517 CONSOLE [ERROR] at javafx.graphics@22/javafx.scene.Parent$3.onProposedChange(Unknown Source)
01:58:16.518 CONSOLE [ERROR] at javafx.base@22/com.sun.javafx.collections.VetoableListDecorator.setAll(Unknown Source)
01:58:16.518 CONSOLE [ERROR] at javafx.base@22/com.sun.javafx.collections.VetoableListDecorator.setAll(Unknown Source)
01:58:16.518 CONSOLE [ERROR] at javafx.controls@22/javafx.scene.control.skin.LabeledSkinBase.updateChildren(Unknown Source)
01:58:16.518 CONSOLE [ERROR] at javafx.controls@22/javafx.scene.control.skin.LabeledSkinBase.lambda$new$11(Unknown Source)
01:58:16.518 CONSOLE [ERROR] at javafx.controls@22/com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler.lambda$new$1(Unknown Source)
01:58:16.518 CONSOLE [ERROR] at javafx.base@22/javafx.beans.value.WeakChangeListener.changed(Unknown Source)
01:58:16.518 CONSOLE [ERROR] at javafx.base@22/com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(Unknown Source)
01:58:16.518 CONSOLE [ERROR] at javafx.base@22/com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(Unknown Source)
01:58:16.519 CONSOLE [ERROR] at javafx.base@22/javafx.beans.property.StringPropertyBase.fireValueChangedEvent(Unknown Source)
01:58:16.519 CONSOLE [ERROR] at javafx.base@22/javafx.beans.property.StringPropertyBase.markInvalid(Unknown Source)
01:58:16.519 CONSOLE [ERROR] at javafx.base@22/javafx.beans.property.StringPropertyBase.set(Unknown Source)
01:58:16.519 CONSOLE [ERROR] at javafx.base@22/javafx.beans.property.StringPropertyBase.set(Unknown Source)
01:58:16.519 CONSOLE [ERROR] at javafx.base@22/javafx.beans.property.StringProperty.setValue(Unknown Source)
01:58:16.520 CONSOLE [ERROR] at javafx.controls@22/javafx.scene.control.Labeled.setText(Unknown Source)
01:58:16.520 CONSOLE [ERROR] at org.controlsfx.controls@11.2.1/impl.org.controlsfx.skin.NotificationPaneSkin.lambda$new$2(Unknown Source)
01:58:16.520 CONSOLE [ERROR] at javafx.controls@22/com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler.lambda$new$1(Unknown Source)
01:58:16.520 CONSOLE [ERROR] at javafx.base@22/javafx.beans.value.WeakChangeListener.changed(Unknown Source)
01:58:16.520 CONSOLE [ERROR] at javafx.base@22/com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(Unknown Source)
01:58:16.520 CONSOLE [ERROR] at javafx.base@22/com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(Unknown Source)
01:58:16.520 CONSOLE [ERROR] at javafx.base@22/javafx.beans.property.StringPropertyBase.fireValueChangedEvent(Unknown Source)
01:58:16.521 CONSOLE [ERROR] at javafx.base@22/javafx.beans.property.StringPropertyBase.markInvalid(Unknown Source)
01:58:16.521 CONSOLE [ERROR] at javafx.base@22/javafx.beans.property.StringPropertyBase.set(Unknown Source)
01:58:16.521 CONSOLE [ERROR] at javafx.base@22/javafx.beans.property.StringPropertyBase.set(Unknown Source)
01:58:16.521 CONSOLE [ERROR] at org.controlsfx.controls@11.2.1/org.controlsfx.control.NotificationPane.setText(Unknown Source)
01:58:16.521 CONSOLE [ERROR] at org.controlsfx.controls@11.2.1/org.controlsfx.control.NotificationPane$7.run(Unknown Source)
01:58:16.521 CONSOLE [ERROR] at org.controlsfx.controls@11.2.1/org.controlsfx.control.NotificationPane.hideAndThen(Unknown Source)
01:58:16.522 CONSOLE [ERROR] at org.controlsfx.controls@11.2.1/org.controlsfx.control.NotificationPane.show(Unknown Source)
01:58:16.522 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.interfaces.AutoHideNotificationPane.lambda$show$2(Unknown Source)
01:58:16.522 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.interfaces.AutoHideNotificationPane.hideAndThen(Unknown Source)
01:58:16.522 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.interfaces.AutoHideNotificationPane.show(Unknown Source)
01:58:16.522 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.interfaces.AutoHideNotificationPane.show(Unknown Source)
01:58:16.522 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.interfaces.AutoHideNotificationPane.checkPending(Unknown Source)
01:58:16.522 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.interfaces.AutoHideNotificationPane.addToPending(Unknown Source)
01:58:16.522 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.interfaces.windows.MainWindow.showNotification(Unknown Source)
01:58:16.522 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.utils.fonts.SystemFontsMapper.getSystemFontsDirs(Unknown Source)
01:58:16.522 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.utils.fonts.SystemFontsMapper.getAllSystemFontFiles(Unknown Source)
01:58:16.523 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.utils.fonts.SystemFontsMapper.lambda$loadFontsFromSystemFiles$3(Unknown Source)
01:58:16.523 CONSOLE [ERROR] at java.base/java.lang.Thread.run(Unknown Source)
01:58:16.523 CONSOLE [ERROR] Exception in thread "System fonts loader" 01:58:16.523 CONSOLE [ERROR] java.lang.IllegalStateException: Not on FX application thread; currentThread = System fonts loader
01:58:16.523 CONSOLE [ERROR] at javafx.graphics@22/com.sun.javafx.tk.Toolkit.checkFxUserThread(Unknown Source)
01:58:16.523 CONSOLE [ERROR] at javafx.graphics@22/com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(Unknown Source)
01:58:16.524 CONSOLE [ERROR] at javafx.graphics@22/javafx.scene.Parent$3.onProposedChange(Unknown Source)
01:58:16.524 CONSOLE [ERROR] at javafx.base@22/com.sun.javafx.collections.VetoableListDecorator.setAll(Unknown Source)
01:58:16.524 CONSOLE [ERROR] at javafx.base@22/com.sun.javafx.collections.VetoableListDecorator.setAll(Unknown Source)
01:58:16.524 CONSOLE [ERROR] at javafx.controls@22/javafx.scene.control.skin.LabeledSkinBase.updateChildren(Unknown Source)
01:58:16.524 CONSOLE [ERROR] at javafx.controls@22/javafx.scene.control.skin.LabeledSkinBase.lambda$new$5(Unknown Source)
01:58:16.524 CONSOLE [ERROR] at javafx.controls@22/com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler.lambda$new$1(Unknown Source)
01:58:16.524 CONSOLE [ERROR] at javafx.base@22/javafx.beans.value.WeakChangeListener.changed(Unknown Source)
01:58:16.524 CONSOLE [ERROR] at javafx.base@22/com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(Unknown Source)
01:58:16.524 CONSOLE [ERROR] at javafx.base@22/com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(Unknown Source)
01:58:16.524 CONSOLE [ERROR] at javafx.base@22/javafx.beans.property.ObjectPropertyBase.fireValueChangedEvent(Unknown Source)
01:58:16.525 CONSOLE [ERROR] at javafx.base@22/javafx.beans.property.ObjectPropertyBase.markInvalid(Unknown Source)
01:58:16.525 CONSOLE [ERROR] at javafx.base@22/javafx.beans.property.ObjectPropertyBase.set(Unknown Source)
01:58:16.525 CONSOLE [ERROR] at javafx.graphics@22/javafx.css.StyleableObjectProperty.set(Unknown Source)
01:58:16.525 CONSOLE [ERROR] at javafx.base@22/javafx.beans.property.ObjectProperty.setValue(Unknown Source)
01:58:16.525 CONSOLE [ERROR] at javafx.controls@22/javafx.scene.control.Labeled.setGraphic(Unknown Source)
01:58:16.525 CONSOLE [ERROR] at org.controlsfx.controls@11.2.1/impl.org.controlsfx.skin.NotificationPaneSkin.lambda$new$3(Unknown Source)
01:58:16.525 CONSOLE [ERROR] at javafx.controls@22/com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler.lambda$new$1(Unknown Source)
01:58:16.525 CONSOLE [ERROR] at javafx.base@22/javafx.beans.value.WeakChangeListener.changed(Unknown Source)
01:58:16.526 CONSOLE [ERROR] at javafx.base@22/com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(Unknown Source)
01:58:16.526 CONSOLE [ERROR] at javafx.base@22/com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(Unknown Source)
01:58:16.526 CONSOLE [ERROR] at javafx.base@22/javafx.beans.property.ObjectPropertyBase.fireValueChangedEvent(Unknown Source)
01:58:16.526 CONSOLE [ERROR] at javafx.base@22/javafx.beans.property.ObjectPropertyBase.markInvalid(Unknown Source)
01:58:16.526 CONSOLE [ERROR] at javafx.base@22/javafx.beans.property.ObjectPropertyBase.set(Unknown Source)
01:58:16.526 CONSOLE [ERROR] at org.controlsfx.controls@11.2.1/org.controlsfx.control.NotificationPane.setGraphic(Unknown Source)
01:58:16.526 CONSOLE [ERROR] at org.controlsfx.controls@11.2.1/org.controlsfx.control.NotificationPane$7.run(Unknown Source)
01:58:16.526 CONSOLE [ERROR] at org.controlsfx.controls@11.2.1/org.controlsfx.control.NotificationPane.hideAndThen(Unknown Source)
01:58:16.526 CONSOLE [ERROR] at org.controlsfx.controls@11.2.1/org.controlsfx.control.NotificationPane.show(Unknown Source)
01:58:16.526 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.interfaces.AutoHideNotificationPane.lambda$show$2(Unknown Source)
01:58:16.527 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.interfaces.AutoHideNotificationPane.hideAndThen(Unknown Source)
01:58:16.527 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.interfaces.AutoHideNotificationPane.show(Unknown Source)
01:58:16.527 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.interfaces.AutoHideNotificationPane.show(Unknown Source)
01:58:16.527 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.interfaces.AutoHideNotificationPane.checkPending(Unknown Source)
01:58:16.527 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.interfaces.AutoHideNotificationPane.addToPending(Unknown Source)
01:58:16.527 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.interfaces.windows.MainWindow.showNotification(Unknown Source)
01:58:16.527 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.utils.fonts.SystemFontsMapper.getSystemFontsDirs(Unknown Source)
01:58:16.528 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.utils.fonts.SystemFontsMapper.getAllSystemFontFiles(Unknown Source)
01:58:16.528 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.utils.fonts.SystemFontsMapper.lambda$loadFontsFromSystemFiles$3(Unknown Source)
01:58:16.528 CONSOLE [ERROR] at java.base/java.lang.Thread.run(Unknown Source)
01:58:16.534 INFO SystemFontsMapper lambda$loadFontsFromSystemFiles$3() Loaded 0/325 fonts in 0.02s (0 unable to load due to PDFBox restrictions, usually missing tables)
I don't know if it matters, but I use NixOS (via nix-ld), that may uses non-standard directory (notably it does not use /usr etc), but does follow XDG specifications to provide environment variables poiting to appropriate folders etc.
Thanks for this super cool software. I just gave it a try, and when it starts it prints an error message
Unable to load system fonts, no directory is readable:And the console shows:
I don't know if it matters, but I use NixOS (via nix-ld), that may uses non-standard directory (notably it does not use
/usretc), but does follow XDG specifications to provide environment variables poiting to appropriate folders etc.