netbeans
netbeans copied to clipboard
crash in org.netbeans.core.startup.Main.getModuleSystem
Apache NetBeans version
Apache NetBeans 15
What happened
NetBeans crash after declining to import settings
How to reproduce
- staring with clean .nb/15 (some -J-D added to netbeans.conf)
- execute script: ./runme which contains something like
bash /ref/nb/NetBeans/NetBeans-15/netbeans/bin/netbeans
--jdkhome /ref/openjdk/java_home
--userdir /home/err/.nb/15/userdir
--cachedir /home/err/.nb/15/cachedir
&> /junk/Caches/nb/15/LOG & - no to import
- OBSERVE: startup/netbeans crashes: ~/bugs/nb/startup-stop/log-1
The first exception is from following the instructions above. I also occasionally see the 2nd exception when starting up netbeans; try again, and maybe again, and it works.
WARNING: package com.apple.eio not in java.desktop
java.lang.NullPointerException
at java.base/java.net.URLConnection$1.getContentTypeFor(URLConnection.java:313)
at java.base/java.net.URLConnection.guessContentTypeFromName(URLConnection.java:1464)
at java.base/sun.net.www.protocol.jar.JarURLConnection.getContentType(JarURLConnection.java:223)
at java.base/java.net.URLConnection.getContentHandler(URLConnection.java:1277)
at java.base/java.net.URLConnection.getContent(URLConnection.java:778)
at java.base/java.net.URL.getContent(URL.java:1150)
at org.openide.util.lookup.MetaInfServicesLookup.search(MetaInfServicesLookup.java:293)
at org.openide.util.lookup.MetaInfServicesLookup.beforeLookup(MetaInfServicesLookup.java:132)
at org.openide.util.lookup.MetaInfServicesLookup.beforeLookupResult(MetaInfServicesLookup.java:111)
at org.openide.util.lookup.AbstractLookup.lookup(AbstractLookup.java:458)
at org.openide.util.lookup.ProxyLookup$R.lookupChange(ProxyLookup.java:519)
at org.openide.util.lookup.ProxyLookup.setData(ProxyLookup.java:372)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:211)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:184)
at org.netbeans.core.startup.MainLookup.changeLookups(MainLookup.java:193)
at org.netbeans.core.startup.MainLookup.moduleClassLoadersUp(MainLookup.java:107)
at org.netbeans.core.startup.MainLookup.systemClassLoaderChanged(MainLookup.java:95)
at org.netbeans.core.startup.ModuleSystem.init(ModuleSystem.java:98)
at org.netbeans.core.startup.Main.getModuleSystem(Main.java:162)
at org.netbeans.core.startup.Main.getModuleSystem(Main.java:142)
at org.netbeans.core.startup.Main.start(Main.java:299)
at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:98)
at java.base/java.lang.Thread.run(Thread.java:834)
Following from normal starup, not clean userdir.
java.lang.NullPointerException
at java.base/java.net.URLConnection$1.getContentTypeFor(URLConnection.java:313)
at java.base/java.net.URLConnection.guessContentTypeFromName(URLConnection.java:1464)
at java.base/sun.net.www.protocol.jar.JarURLConnection.getContentType(JarURLConnection.java:223)
at java.base/java.net.URLConnection.getContentHandler(URLConnection.java:1277)
at java.base/java.net.URLConnection.getContent(URLConnection.java:778)
at java.base/java.net.URL.getContent(URL.java:1150)
at org.openide.util.lookup.MetaInfServicesLookup.search(MetaInfServicesLookup.java:293)
at org.openide.util.lookup.MetaInfServicesLookup.beforeLookup(MetaInfServicesLookup.java:132)
at org.openide.util.lookup.MetaInfServicesLookup.beforeLookupResult(MetaInfServicesLookup.java:111)
at org.openide.util.lookup.AbstractLookup.lookup(AbstractLookup.java:458)
at org.openide.util.lookup.ProxyLookup$R.initResults(ProxyLookup.java:449)
at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:736)
at org.openide.util.lookup.ProxyLookup$R.computeResult(ProxyLookup.java:612)
at org.openide.util.lookup.ProxyLookup$R.allItems(ProxyLookup.java:596)
at org.openide.util.lookup.ProxyLookup$R.collImpl(ProxyLookup.java:699)
at org.openide.util.lookup.ProxyLookup$R.collectFires(ProxyLookup.java:645)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:228)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:184)
at org.netbeans.core.startup.MainLookup.changeLookups(MainLookup.java:193)
at org.netbeans.core.startup.MainLookup.doInitializeLookup(MainLookup.java:183)
at org.netbeans.core.startup.MainLookup.modulesClassPathInitialized(MainLookup.java:134)
at org.netbeans.core.startup.MainLookup.modulesClassPathInitialized(MainLookup.java:127)
at org.netbeans.core.startup.NbInstaller.loadImpl(NbInstaller.java:360)
at org.netbeans.core.startup.NbInstaller.access$000(NbInstaller.java:77)
at org.netbeans.core.startup.NbInstaller$1.run(NbInstaller.java:322)
at org.openide.filesystems.FileUtil$2.run(FileUtil.java:418)
at org.openide.filesystems.EventControl.runAtomicAction(EventControl.java:102)
at org.openide.filesystems.FileSystem.runAtomicAction(FileSystem.java:494)
at org.openide.filesystems.FileUtil.runAtomicAction(FileUtil.java:402)
at org.openide.filesystems.FileUtil.runAtomicAction(FileUtil.java:422)
at org.netbeans.core.startup.NbInstaller.load(NbInstaller.java:319)
at org.netbeans.ModuleManager.enable(ModuleManager.java:1457)
at org.netbeans.ModuleManager.enable(ModuleManager.java:1254)
at org.netbeans.core.startup.ModuleList.installNew(ModuleList.java:316)
at org.netbeans.core.startup.ModuleList.trigger(ModuleList.java:252)
at org.netbeans.core.startup.ModuleSystem.restore(ModuleSystem.java:298)
at org.netbeans.core.startup.Main.getModuleSystem(Main.java:173)
at org.netbeans.core.startup.Main.getModuleSystem(Main.java:142)
at org.netbeans.core.startup.Main.start(Main.java:299)
at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:98)
at java.base/java.lang.Thread.run(Thread.java:834)
Did this work correctly in an earlier version?
No / Don't know
Operating System
Linux harmony 5.19.0-76051900-generic #202207312230~1660780566~22.04~9d60db1
JDK
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
Apache NetBeans packaging
Apache NetBeans binary zip
Anything else
No response
Are you willing to submit a pull request?
No
Code of Conduct
Yes
I tried using jdk-17 to get more accurate NPE report. It doesn't fail.
I can't use jdk-17 to run NetBeans in general since I'm working on a gradle project that requires gradle 6.8.x.
Not reproducible here on Ubuntu 22.04 (or on 20.04 as I was using that throughout release process). What are the changes to netbeans.conf you're running with? Does it work running directly using ./netbeans --userdir <USERDIR> --jdkhome <JAVA_HOME>
? Does the value of Java Home
at the top of the log match what you're passing in to jdkhome
? In fact, can you attach the full, failing log here?
Fresh unzip of NetBeans, no -J-D or other mods. /ref, /home, /junk are different filesystems
$ ls -l /ref/openjdk/java_home
lrwxrwxrwx 1 err err 6 Sep 11 19:16 /ref/openjdk/java_home -> jdk-11
err@harmony:~/.nb/15-startup-crash
$ ls -l /ref/openjdk/jdk-11
lrwxrwxrwx 1 err err 33 Aug 22 16:58 /ref/openjdk/jdk-11 -> /junk/BACK_REF/openjdk/jdk-11.0.2
dorun:
bash /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/bin/netbeans \
--jdkhome /ref/openjdk/java_home \
--userdir /home/err/.nb/15-startup-crash/udir
exit
After bash dorun
, the dialog Confirm Import Settings
comes up. Click No.
Following copied from console
$ bash dorun
WARNING: package com.apple.eio not in java.desktop
java.lang.NullPointerException
at java.base/java.net.URLConnection$1.getContentTypeFor(URLConnection.java:313)
at java.base/java.net.URLConnection.guessContentTypeFromName(URLConnection.java:1464)
at java.base/sun.net.www.protocol.jar.JarURLConnection.getContentType(JarURLConnection.java:223)
at java.base/java.net.URLConnection.getContentHandler(URLConnection.java:1277)
at java.base/java.net.URLConnection.getContent(URLConnection.java:778)
at java.base/java.net.URL.getContent(URL.java:1150)
at org.openide.util.lookup.MetaInfServicesLookup.search(MetaInfServicesLookup.java:293)
at org.openide.util.lookup.MetaInfServicesLookup.beforeLookup(MetaInfServicesLookup.java:132)
at org.openide.util.lookup.MetaInfServicesLookup.beforeLookupResult(MetaInfServicesLookup.java:111)
at org.openide.util.lookup.AbstractLookup.lookup(AbstractLookup.java:458)
at org.openide.util.lookup.ProxyLookup$R.lookupChange(ProxyLookup.java:519)
at org.openide.util.lookup.ProxyLookup.setData(ProxyLookup.java:372)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:211)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:184)
at org.netbeans.core.startup.MainLookup.changeLookups(MainLookup.java:193)
at org.netbeans.core.startup.MainLookup.moduleClassLoadersUp(MainLookup.java:107)
at org.netbeans.core.startup.MainLookup.systemClassLoaderChanged(MainLookup.java:95)
at org.netbeans.core.startup.ModuleSystem.init(ModuleSystem.java:98)
at org.netbeans.core.startup.Main.getModuleSystem(Main.java:162)
at org.netbeans.core.startup.Main.getModuleSystem(Main.java:142)
at org.netbeans.core.startup.Main.start(Main.java:299)
at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:98)
at java.base/java.lang.Thread.run(Thread.java:834)
err@harmony:~/.nb/15-startup-crash
And messages.log
-------------------------------------------------------------------------------
>Log Session: Tuesday, September 20, 2022 at 6:50:35 AM Pacific Daylight Time
>System Info:
Product Version = Apache NetBeans IDE 15
Operating System = Linux version 5.19.0-76051900-generic running on amd64
Java; VM; Vendor = 11.0.2; OpenJDK 64-Bit Server VM 11.0.2+9; Oracle Corporation
Runtime = OpenJDK Runtime Environment 11.0.2+9
Java Home = /junk/BACK_REF/openjdk/jdk-11.0.2
System Locale; Encoding = en_US (nb); UTF-8
Home Directory = /home/err
Current Directory = /home/err/.nb/15-startup-crash
User Directory = /home/err/.nb/15-startup-crash/udir
Cache Directory = /home/err/.nb/15-startup-crash/udir/var/cache
Installation = /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/nb
/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/ergonomics
/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/ide
/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/extide
/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/java
/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/apisupport
/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/webcommon
/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/websvccommon
/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/enterprise
/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/profiler
/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/php
/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/harness
/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/cpplite
/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/groovy
/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/javafx
/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform
Boot & Ext. Classpath =
Application Classpath = /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/lib/boot.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/lib/org-openide-modules.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/lib/org-openide-util.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/lib/org-openide-util-lookup.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/lib/org-openide-util-ui.jar
Startup Classpath = /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/core/asm-commons-9.3.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/core/org-netbeans-libs-asm.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/core/org-openide-filesystems.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/core/asm-tree-9.3.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/core/core-base.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/core/core.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/core/asm-9.3.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/core/org-openide-filesystems-compat8.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/nb/core/org-netbeans-upgrader.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/nb/core/locale/core_nb.jar
-------------------------------------------------------------------------------
$ tree udir/
udir/
├── config
└── var
├── cache
│ └── lastModified
│ └── all-checksum.txt
├── imported
└── log
└── messages.log
Wow, this one surprised me, copied from console
err@harmony:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/bin
$ chmod +x netbeans
err@harmony:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/bin
$ ./netbeans --jdkhome /ref/openjdk/java_home
WARNING: package com.apple.eio not in java.desktop
java.lang.NullPointerException
at java.base/java.net.URLConnection$1.getContentTypeFor(URLConnection.java:313)
at java.base/java.net.URLConnection.guessContentTypeFromName(URLConnection.java:1464)
at java.base/sun.net.www.protocol.jar.JarURLConnection.getContentType(JarURLConnection.java:223)
at java.base/java.net.URLConnection.getContentHandler(URLConnection.java:1277)
at java.base/java.net.URLConnection.getContent(URLConnection.java:778)
at java.base/java.net.URL.getContent(URL.java:1150)
at org.openide.util.lookup.MetaInfServicesLookup.search(MetaInfServicesLookup.java:293)
at org.openide.util.lookup.MetaInfServicesLookup.beforeLookup(MetaInfServicesLookup.java:132)
at org.openide.util.lookup.MetaInfServicesLookup.beforeLookupResult(MetaInfServicesLookup.java:111)
at org.openide.util.lookup.AbstractLookup.lookup(AbstractLookup.java:458)
at org.openide.util.lookup.ProxyLookup$R.lookupChange(ProxyLookup.java:519)
at org.openide.util.lookup.ProxyLookup.setData(ProxyLookup.java:372)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:211)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:184)
at org.netbeans.core.startup.MainLookup.changeLookups(MainLookup.java:193)
at org.netbeans.core.startup.MainLookup.moduleClassLoadersUp(MainLookup.java:107)
at org.netbeans.core.startup.MainLookup.systemClassLoaderChanged(MainLookup.java:95)
at org.netbeans.core.startup.ModuleSystem.init(ModuleSystem.java:98)
at org.netbeans.core.startup.Main.getModuleSystem(Main.java:162)
at org.netbeans.core.startup.Main.getModuleSystem(Main.java:142)
at org.netbeans.core.startup.Main.start(Main.java:299)
at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:98)
at java.base/java.lang.Thread.run(Thread.java:834)
and
$ tree ~/.netbeans/15
/home/err/.netbeans/15
├── config
└── var
├── imported
└── log
└── messages.log
3 directories, 2 files
Do it again and it starts up. (and I occasionally get the crash when starting up normally; well, what's normal for me)
err@harmony:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/bin
$ ./netbeans --jdkhome /ref/openjdk/java_home
WARNING: package com.apple.eio not in java.desktop
err@harmony:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/bin
It's all SSD, big ram. Race condition?
Maybe. Try setting --jdkhome
directly to /junk/BACK_REF/openjdk/jdk-11.0.2
. Same as top of log. Same problem?
Java Home = /junk/BACK_REF/openjdk/jdk-11.0.2
$ ./netbeans --jdkhome /junk/BACK_REF/openjdk/jdk-11.0.2
WARNING: package com.apple.eio not in java.desktop
java.lang.NullPointerException
at java.base/java.net.URLConnection$1.getContentTypeFor(URLConnection.java:313)
Thanks. Been tracking a few issues with jdkhome
being a symlink recently. Guess this isn't one of them.
same exception was reported in #3958, I knew i saw that one before :)
Huh. My network setup is vanilla; no proxy stuff. Comcast->cable-modem->NetGear router/wifi.
null is actually a valid return value: https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/net/URLConnection.html#getContentType() so the JDK should probably check for that (haven't looked at the code yet since the source I am looking at doesn't match the line numbers :P).
It could still be invalid input which ends up throwing the internal NPE. Figuring out what the actual URL is which causes this situation might give some leads too.
null is actually a valid return value: ... so the JDK should probably check
Maybe it was fixed. I happened all the time with JDK-11, and never with JDK-17. The other report you cite was also jdk-11.