NetBeans could not start on a Xubuntu Linux system.
It displayed a splash screen, wrote the message Initializing for a few seconds and then quit.
The original distribution was Xubuntu 16.04 LTS which had been updated to Xubuntu 18.04 LTS.
Tried starting NetBeans from terminal and got these warnings:
WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.netbeans.ProxyURLStreamHandlerFactory (file:/usr/share/netbeans/platform18/lib/boot.jar) to field java.net.URL.handler WARNING: Please consider reporting this to the maintainers of org.netbeans.ProxyURLStreamHandlerFactory WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release
Decided to check the startup activity with:
strace netbeans 2> netbeans_strace.txt
Noticed that NetBeans was looking for configuration files in 3 locations:
stat("/usr/share/netbeans/8.1/etc/netbeans.conf", {st_mode=S_IFREG|0644, st_size=2958, ...}) = 0 stat("/etc/netbeans.conf", {st_mode=S_IFREG|0644, st_size=2958, ...}) = 0 stat("~/.netbeans/8.1/etc/netbeans.conf", 0x7ffc7aae8df0) = -1 ENOENT (No such file or directory)
Decided to look for other files under: ~/.netbeans/8.1/
Found log files under: ~/.netbeans/8.1/var/log/
Part of: ~/.netbeans/8.1/var/log/messages.log
Product Version = NetBeans IDE 8.1 (Build 20180221-debian-8.1) Java Home = /usr/lib/jvm/java-11-openjdk-amd64 ... ------------------------------------------------------------------------------- java.lang.SecurityException: setContextClassLoader at java.base/jdk.internal.misc.InnocuousThread.setContextClassLoader(InnocuousThread.java:116) ...
Discovered that NetBeans 8.1 requires JDK 8.
Found JDK 8 under:
/usr/lib/jvm/java-8-openjdk-amd64/
Created the folder:
~/.netbeans/8.1/etc/
Then created the configuration file:
~/.netbeans/8.1/etc/netbeans.conf
With a single line:
netbeans_jdkhome="/usr/lib/jvm/java-8-openjdk-amd64"
This seemed to help somewhat, because the splash screen continued until:
Turning on modules…
But then it quit again…
Found and examined: ~/.netbeans/8.1/var/log/messages.log
Noticed this part:
Product Version = NetBeans IDE 8.1 (Build 20180221-debian-8.1) Java Home = /usr/lib/jvm/java-8-openjdk-amd64/jre ... ------------------------------------------------------------------------------- INFO [org.netbeans.modules.netbinox]: Install area set to file:/usr/share/netbeans/8.1/ java.lang.NullPointerException at org.eclipse.osgi.baseadaptor.BaseAdaptor.initializeStorage(BaseAdaptor.java:123) at org.eclipse.osgi.framework.internal.core.Framework.<init>(Framework.java:192) at org.eclipse.osgi.framework.internal.core.EquinoxLauncher.internalInit(EquinoxLauncher.java:67) at org.eclipse.osgi.framework.internal.core.EquinoxLauncher.init(EquinoxLauncher.java:37) at org.eclipse.osgi.launch.Equinox.init(Equinox.java:178) at org.netbeans.modules.netbinox.Netbinox.init(Unknown Source) at org.netbeans.core.netigso.Netigso.prepare(Unknown Source) at org.netbeans.NetigsoHandle.turnOn(Unknown Source) at org.netbeans.ModuleManager.enable(Unknown Source) INFO [null]: Last record repeated again. at org.netbeans.core.startup.ModuleList.installNew(Unknown Source) at org.netbeans.core.startup.ModuleList.trigger(Unknown Source) at org.netbeans.core.startup.ModuleSystem.restore(Unknown Source) at org.netbeans.core.startup.Main.getModuleSystem(Unknown Source) INFO [null]: Last record repeated again. at org.netbeans.core.startup.Main.start(Unknown Source) at org.netbeans.core.startup.TopThreadGroup.run(Unknown Source) at java.lang.Thread.run(Thread.java:748)
Found this site, which seemed to describe this part of the problem:
https://bugs.launchpad.net/ubuntu/+source/netbeans/+bug/1776937
Checked the installed version of libequinox-osgi-java which was: 3.9.1-1
Downloaded: libequinox-osgi-java_3.8.1-10_all.deb
From: https://packages.ubuntu.com/artful/all/libequinox-osgi-java/download
Installed the package with:
sudo dpkg -i libequinox-osgi-java_3.8.1-10_all.deb
Held the package at the old version with:
sudo apt-mark hold libequinox-osgi-java
Tried starting NetBeans again, but it still failed to start.
Found errors in: ~/.netbeans/8.1/var/log/messages.log
Like:
!ENTRY org.eclipse.osgi 4 0 2018-10-15 22:49:29.510 !MESSAGE Error reading configuration: Unable to create lock manager. !STACK 0 java.io.IOException: Unable to create lock manager. at org.eclipse.osgi.storagemanager.StorageManager.open(StorageManager.java:699)
Tried running NetBeans as root with:
sudo netbeans
It started up without crashing…
It was still unable to start under the regular user account.
Noticed that it had created some files with root as owner:
!ENTRY org.eclipse.osgi 4 0 2018-10-15 23:05:36.425 !MESSAGE Error reading configuration: Permission denied !STACK 0 java.io.IOException: Permission denied at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createTempFile(File.java:2024) at org.eclipse.osgi.storagemanager.StorageManager.initializeInstanceFile(StorageManager.java:188)
Decided to change the file permissions with:
sudo chown $USER:$USER ~/.netbeans/ -R sudo chown $USER:$USER ~/.cache/netbeans/ -R
This was the last step. After this NetBeans could finally start normally again.
Conclusion
If NetBeans fails to start on Ubuntu/Xubuntu 18.4 LTS try these things:
- Check and change used JDK to version 8.
- Downgrade libequinox-osgi-java package from 3.9.1-1 to 3.8.1-10 and hold/pin it.
- Run NetBeans as root once.
- Change NetBeans file permissions to normal user permissions.