This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 196328 - IllegalArgumentException on save Project properties
Summary: IllegalArgumentException on save Project properties
Status: RESOLVED FIXED
Alias: None
Product: cnd
Classification: Unclassified
Component: Remote (show other bugs)
Version: 7.0
Hardware: All All
: P2 normal (vote)
Assignee: issues@cnd
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-03-04 20:02 UTC by Alexander Pepin
Modified: 2011-03-07 05:34 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Pepin 2011-03-04 20:02:44 UTC
Steps to reproduce:
- create full remote project
- open Project Properties
- change tool from "Default (GNU)" to "GNU" 
- press Apply or OK

Result: Exception appears

java.lang.IllegalArgumentException: rfs://tester@amkar:22/export/home/tester/working/test_io_gnu is not a valid classpath entry; it must end with a slash.
	at org.netbeans.modules.java.classpath.SimplePathResourceImplementation.verify(SimplePathResourceImplementation.java:97)
	at org.netbeans.modules.java.classpath.SimplePathResourceImplementation.verify(SimplePathResourceImplementation.java:65)
	at org.netbeans.modules.java.classpath.SimplePathResourceImplementation.<init>(SimplePathResourceImplementation.java:108)
	at org.netbeans.spi.java.classpath.support.ClassPathSupport.createResource(ClassPathSupport.java:79)
	at org.netbeans.modules.cnd.makeproject.MakeProject$MutableCP.getResources(MakeProject.java:1380)
	at org.netbeans.api.java.classpath.ClassPath$SPIListener.propertyChange(ClassPath.java:1118)
	at org.openide.util.WeakListenerImpl$PropertyChange.propertyChange(WeakListenerImpl.java:196)
	at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
	at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276)
	at org.netbeans.modules.cnd.makeproject.MakeProject$MutableCP.stateChanged(MakeProject.java:1411)
	at org.openide.util.WeakListenerImpl$Change.stateChanged(WeakListenerImpl.java:329)
[catch] at org.openide.util.ChangeSupport.fireChange(ChangeSupport.java:133)
	at org.openide.util.ChangeSupport.fireChange(ChangeSupport.java:119)
	at org.netbeans.modules.cnd.makeproject.MakeSources.fireChange(MakeSources.java:263)
	at org.netbeans.modules.cnd.makeproject.MakeSources.sourceRootsChanged(MakeSources.java:281)
	at org.netbeans.modules.cnd.makeproject.api.configurations.MakeConfigurationDescriptor.addSourceRoot(MakeConfigurationDescriptor.java:1146)
	at org.netbeans.modules.cnd.makeproject.api.configurations.MakeConfigurationDescriptor.checkForChangedSourceRoots(MakeConfigurationDescriptor.java:1200)
	at org.netbeans.modules.cnd.makeproject.api.MakeCustomizerProvider$OptionListener.actionPerformed(MakeCustomizerProvider.java:328)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6263)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6028)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:148)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
	at java.awt.Dialog$1.run(Dialog.java:1046)
	at java.awt.Dialog$3.run(Dialog.java:1098)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.Dialog.show(Dialog.java:1096)
	at org.netbeans.core.windows.services.NbPresenter.superShow(NbPresenter.java:1038)
	at org.netbeans.core.windows.services.NbPresenter.doShow(NbPresenter.java:1072)
	at org.netbeans.core.windows.services.NbPresenter.run(NbPresenter.java:1060)
	at org.netbeans.core.windows.services.NbPresenter.run(NbPresenter.java:126)
	at org.openide.util.Mutex$1AWTWorker.run(Mutex.java:1377)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:148)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Comment 1 Vladimir Kvashin 2011-03-04 20:59:48 UTC
As I understand, this repeats in full IDE (with Java).
The key point is here:
MakeProject.java:1380
list.add(new PathResourceImpl(
    ClassPathSupport.createResource(g.getRootFolder().getURL())));
Comment 2 Vladimir Kvashin 2011-03-04 22:28:26 UTC
The root cause is as follows.
SimplePathResourceImplementation.verify()
checks that url.toString() is ended with a trailing slash and throws exception if it is not.

(It seems strange to use toString(), but URL.toString javadoc reads that it's the same as toExternalForm())

Remote directories URLs does not have trailing slash (local directories URL do). It would be easy to add this trailing slash for directories; but for links this would cost additional request to server (right now link does not "know" at creation whether it links to a directory or not)
Comment 3 Alexander Pepin 2011-03-05 13:14:23 UTC
This happens on Windows as well. Moreover the tested build (from elif) contains only cnd (no java).
I changed "Run command" (added some arguments) pressed OK and got:

java.lang.IllegalArgumentException: rfs://tester@amkar:22/export/home/tester/working/test_io_gnu is not a valid classpath entry; it must end with a slash.
	at org.netbeans.modules.java.classpath.SimplePathResourceImplementation.verify(SimplePathResourceImplementation.java:97)
	at org.netbeans.modules.java.classpath.SimplePathResourceImplementation.verify(SimplePathResourceImplementation.java:65)
	at org.netbeans.modules.java.classpath.SimplePathResourceImplementation.<init>(SimplePathResourceImplementation.java:108)
	at org.netbeans.spi.java.classpath.support.ClassPathSupport.createResource(ClassPathSupport.java:79)
	at org.netbeans.modules.cnd.makeproject.MakeProject$MutableCP.getResources(MakeProject.java:1380)
	at org.netbeans.api.java.classpath.ClassPath$SPIListener.propertyChange(ClassPath.java:1118)
	at org.openide.util.WeakListenerImpl$PropertyChange.propertyChange(WeakListenerImpl.java:196)
	at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
	at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276)
	at org.netbeans.modules.cnd.makeproject.MakeProject$MutableCP.stateChanged(MakeProject.java:1411)
	at org.openide.util.WeakListenerImpl$Change.stateChanged(WeakListenerImpl.java:329)
[catch] at org.openide.util.ChangeSupport.fireChange(ChangeSupport.java:133)
	at org.openide.util.ChangeSupport.fireChange(ChangeSupport.java:119)
	at org.netbeans.modules.cnd.makeproject.MakeSources.fireChange(MakeSources.java:263)
	at org.netbeans.modules.cnd.makeproject.MakeSources.sourceRootsChanged(MakeSources.java:281)
	at org.netbeans.modules.cnd.makeproject.api.configurations.MakeConfigurationDescriptor.addSourceRoot(MakeConfigurationDescriptor.java:1148)
	at org.netbeans.modules.cnd.makeproject.api.configurations.MakeConfigurationDescriptor.checkForChangedSourceRoots(MakeConfigurationDescriptor.java:1202)
	at org.netbeans.modules.cnd.makeproject.api.MakeCustomizerProvider$OptionListener.actionPerformed(MakeCustomizerProvider.java:328)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6267)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6032)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:148)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
	at java.awt.Dialog$1.run(Dialog.java:1046)
	at java.awt.Dialog$3.run(Dialog.java:1098)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.Dialog.show(Dialog.java:1096)
	at org.netbeans.core.windows.services.NbPresenter.superShow(NbPresenter.java:1038)
	at org.netbeans.core.windows.services.NbPresenter.doShow(NbPresenter.java:1072)
	at org.netbeans.core.windows.services.NbPresenter.run(NbPresenter.java:1060)
	at org.netbeans.core.windows.services.NbPresenter.run(NbPresenter.java:126)
	at org.openide.util.Mutex$1AWTWorker.run(Mutex.java:1377)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:148)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Comment 4 Vladimir Kvashin 2011-03-05 18:46:43 UTC
http://hg.netbeans.org/cnd-main/rev/052f6ba4d478
Comment 5 Quality Engineering 2011-03-06 05:39:33 UTC
Integrated into 'main-golden', will be available in build *201103060000* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main/rev/052f6ba4d478
User: Vladimir Kvashin <vkvashin@netbeans.org>
Log: fix (workaround) for #196328 - IllegalArgumentException on save Project properties
Comment 6 Quality Engineering 2011-03-07 05:34:53 UTC
Integrated into 'main-golden', will be available in build *201103070000* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main/rev/911eaccb77ed
User: Vladimir Kvashin <vkvashin@netbeans.org>
Log: fixed a typo (additional fix for #196328 - IllegalArgumentException on save Project properties)