Wednesday, May 28, 2008

MAC 0SX with Netbeans 6.0 and Java 1.6

If you install the new 1.6 jdk, netbeans pretty much craps on you. Oh, it will run just fine, but try to create something like, let's say, a java class. It will let you name it, give it a package, then ....nothing. But hey, who needs to create a java class anyway?

http://www.netbeans.org/issues/show_bug.cgi?id=129227 describes the bug.

I didn't mess with moving things around, I simply did this:

Alternative (non-destructive) workaround.

Edit the file /Applications/NetBeans/NetBeans\ 6.1\ Beta.app/Contents/Resources/NetBeans/etc/netbeans.conf

add "-J-Djava.ext.dirs=/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/" to the definition of "netbeans_default_options".

and that's it, restart netbeans and it works. mofo's

Here's the stack trace produced before the fix:

java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:675)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:280)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at org.netbeans.ProxyClassLoader.loadClass(ProxyClassLoader.java:213)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at sun.misc.Service$LazyIterator.next(Service.java:271)
at javax.script.ScriptEngineManager.initEngines(ScriptEngineManager.java:127)
at javax.script.ScriptEngineManager.access$000(ScriptEngineManager.java:55)
at javax.script.ScriptEngineManager$1.run(ScriptEngineManager.java:98)
at java.security.AccessController.doPrivileged(Native Method)
at javax.script.ScriptEngineManager.init(ScriptEngineManager.java:96)
at javax.script.ScriptEngineManager.(ScriptEngineManager.java:69)
at org.netbeans.modules.templates.ScriptingCreateFromTemplateHandler.engine(ScriptingCreateFromTemplateHandler.java:125)
at org.netbeans.modules.templates.ScriptingCreateFromTemplateHandler.accept(ScriptingCreateFromTemplateHandler.java:67)
at org.openide.loaders.MultiDataObject.handleCreateFromTemplate(MultiDataObject.java:694)
at org.openide.loaders.DefaultDataObject.handleCreateFromTemplate(DefaultDataObject.java:159)
at org.openide.loaders.DataObject$CreateAction.run(DataObject.java:1247)
at org.openide.loaders.DataObjectPool$1WrapAtomicAction.run(DataObjectPool.java:238)
at org.openide.filesystems.EventControl.runAtomicAction(EventControl.java:120)
at org.openide.filesystems.FileSystem.runAtomicAction(FileSystem.java:499)
at org.openide.loaders.DataObjectPool.runAtomicAction(DataObjectPool.java:250)
at org.openide.loaders.DataObject.invokeAtomicAction(DataObject.java:861)
at org.openide.loaders.DataObject.createFromTemplate(DataObject.java:793)
at org.openide.loaders.DataObject.createFromTemplate(DataObject.java:773)
at org.netbeans.modules.java.j2seproject.J2SEProjectGenerator.createMainClass(J2SEProjectGenerator.java:368)
at org.netbeans.modules.java.j2seproject.J2SEProjectGenerator.access$200(J2SEProjectGenerator.java:78)
at org.netbeans.modules.java.j2seproject.J2SEProjectGenerator$1.run(J2SEProjectGenerator.java:116)
at org.openide.filesystems.EventControl.runAtomicAction(EventControl.java:120)
at org.openide.filesystems.FileSystem.runAtomicAction(FileSystem.java:499)
at org.netbeans.modules.java.j2seproject.J2SEProjectGenerator.createProject(J2SEProjectGenerator.java:97)
at
org.netbeans.modules.java.j2seproject.ui.wizards.NewJ2SEProjectWizardIterator.instantiate(NewJ2SEProjectWizardIterator.java:181)
at org.openide.loaders.TemplateWizard$InstantiatingIteratorBridge.instantiate(TemplateWizard.java:1023)
at org.openide.loaders.TemplateWizard.handleInstantiate(TemplateWizard.java:595)
at org.openide.loaders.TemplateWizard.instantiateNewObjects(TemplateWizard.java:416)
at org.openide.loaders.TemplateWizardIterImpl.instantiate(TemplateWizardIterImpl.java:253)
at org.openide.loaders.TemplateWizardIteratorWrapper.instantiate(TemplateWizardIteratorWrapper.java:165)
at org.openide.WizardDescriptor.callInstantiateOpen(WizardDescriptor.java:1384)
at org.openide.WizardDescriptor.callInstantiate(WizardDescriptor.java:1341)
at org.openide.WizardDescriptor.access$1600(WizardDescriptor.java:119)
at org.openide.WizardDescriptor$Listener$2$1.run(WizardDescriptor.java:1908)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:561)
[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:986)

I get this exception trying to report the exception within the IDE. Looks like the URL is invalid.

java.io.IOException: Server returned HTTP response code: 403 for URL:
http://testwww.netbeans.org/nonav/uigestures/error.html
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1170)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:367)
at javax.swing.JEditorPane.getStream(JEditorPane.java:689)
Caused: java.io.IOException: Server returned HTTP response code: 403 for URL:
http://testwww.netbeans.org/nonav/uigestures/error.html
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1223)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1217)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:906)
at javax.swing.JEditorPane.getStream(JEditorPane.java:719)
at javax.swing.JEditorPane.setPage(JEditorPane.java:406)
at org.netbeans.modules.uihandler.Installer$SubmitInteractive.assignInternalURL(Installer.java:1289)
at org.netbeans.modules.uihandler.Installer$Submit.doShow(Installer.java:888)
at org.netbeans.modules.uihandler.Installer.doDisplaySummary(Installer.java:475)
at org.netbeans.modules.uihandler.Installer.displaySummary(Installer.java:410)
at org.netbeans.modules.uihandler.UIHandler.run(UIHandler.java:138)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:561)
[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:986)

6 comments:

Jim Blackler said...

Great post, Jonathan. My NetBeans has been broken for a few days, I've been going mad trying to fix it. I'd not made the connection with installing the new JDK. When I found your post I was able to fix the problem.

Jonathan said...

Thanks for the comment. There is nothing more frustrating then upgrading one thing just to break something else.

curdnerd said...

Worked for me too! Thanks Jonathan. This was a really frustrating bug.

Anonymous said...

Just downloaded netbeans for my new Mac and couldn't create a simple class file. Netbeans does have this issue in their issueZilla and they believe it is the new Apple JDK.

Thanks for the tip, it works great!

Roger Hyam said...

This is a year later and Apple have broken 1.5 again. Because 1.6 is available on dual core intel I changed these lines:

#netbeans_jdkhome=/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home
netbeans_jdkhome=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home

Seems to work.

Thanks for the post

Webmaster said...

I appreciate the information. Java is one of the consistent player from the development industry which has been providing the wider scope for developers to come out with different solutions.