Recently I installed FreeMind (from the AUR) on Manjaro but when I tried to run it, nothing happened. After trying to launch it from a terminal, I get some information back.
[andy@home-pc ~]$ freemind Checking Java Version... Exception in thread "main" java.lang.reflect.InaccessibleObjectException: Unable to make field private static java.lang.String sun.awt.X11.XToolkit.awtAppClassName accessible: module java.desktop does not "opens sun.awt.X11" to unnamed module @5a8e6209 at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178) at java.base/java.lang.reflect.Field.setAccessible(Field.java:172) at freemind.main.FreeMindStarter.main(FreeMindStarter.java:72)
A google search seems to indicate this is a bug and a work-around can be found with the --add-opens
option. The exact change I made was in /usr/bin/freemind
.
$ sudo vim /usr/bin/freemind
Always a good idea to take a backup first!
$ sudo cp -v /usr/bin/freemind ~/freemind.bkup
Edit the file using vim, vi, nano, etc.
$ sudo vim /usr/bin/freemind
And add --add-opens="java.desktop/sun.awt.X11=ALL-UNNAMED"
as shown in the below diff
output.
$ diff ~/freemind.bkup /usr/bin/freemind 214c214 < "${JAVACMD}" -Xmx256M -Dfreemind.base.dir="${freedir}" -cp "${CLASSPATH}" freemind.main.FreeMindStarter "$@" --- > "${JAVACMD}" --add-opens="java.desktop/sun.awt.X11=ALL-UNNAMED" -Xmx256M -Dfreemind.base.dir="${freedir}" -cp "${CLASSPATH}" freemind.main.FreeMindStarter "$@" 218c218 < "${JAVACMD}" -Xmx256M -Dgnu.java.awt.peer.gtk.Graphics=Graphics2D -Dfreemind.base.dir="${freedir}" -cp "${CLASSPATH}" freemind.main.FreeMindStarter "$@" --- > "${JAVACMD}" --add-opens="java.desktop/sun.awt.X11=ALL-UNNAMED" -Xmx256M -Dgnu.java.awt.peer.gtk.Graphics=Graphics2D -Dfreemind.base.dir="${freedir}" -cp "${CLASSPATH}" freemind.main.FreeMindStarter "$@"
This resolved the issue I was having. However, perhaps a better way of installing this particular package would have been to use snaps, as shown here.
Be the first to comment