Community
Participate
Working Groups
Created attachment 163859 [details] JAR to reproduce the bug Moving this bug report from bug 288700, comment 14. If a lib has a Class-Path: entry with an invalid value (../.. in my case), it crashes the project with the following exception: Problems occurred when invoking code from plug-in: "org.eclipse.jface". org.eclipse.core.runtime.AssertionFailedException: null argument: at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85) at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:73) at org.eclipse.core.runtime.Path.initialize(Path.java:577) at org.eclipse.core.runtime.Path.<init>(Path.java:185) at org.eclipse.core.internal.resources.WorkspaceRoot.getProject(WorkspaceRoot.java:179) at org.eclipse.jdt.internal.core.ExternalFoldersManager.isExternalFolderPath(ExternalFoldersManager.java:77) at org.eclipse.jdt.internal.core.JavaProject.addToResult(JavaProject.java:2634) at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2611) at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2662) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1861) at org.eclipse.jdt.internal.core.PackageFragmentRoot.getRawClasspathEntry(PackageFragmentRoot.java:547) at org.eclipse.jdt.internal.ui.viewsupport.JavaElementLabelComposer.appendVariableLabel(JavaElementLabelComposer.java:1076) at org.eclipse.jdt.internal.ui.viewsupport.JavaElementLabelComposer.appendPackageFragmentRootLabel(JavaElementLabelComposer.java:1058) at org.eclipse.jdt.internal.ui.viewsupport.JavaElementLabelComposer.appendElementLabel(JavaElementLabelComposer.java:263) at org.eclipse.jdt.ui.JavaElementLabels.getElementLabel(JavaElementLabels.java:521) at org.eclipse.jdt.ui.JavaElementLabels.getStyledElementLabel(JavaElementLabels.java:496) at org.eclipse.jdt.ui.JavaElementLabels.getStyledTextLabel(JavaElementLabels.java:424) at org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.getStyledText(JavaUILabelProvider.java:178) at org.eclipse.jdt.internal.ui.packageview.PackageExplorerLabelProvider.getStyledText(PackageExplorerLabelProvider.java:70) at org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.getStyledText(DelegatingStyledCellLabelProvider.java:195) at org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider.getStyledText(DecoratingStyledCellLabelProvider.java:192) at org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.update(DelegatingStyledCellLabelProvider.java:103) at org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider.update(DecoratingStyledCellLabelProvider.java:134) at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:145) at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:932) at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:102) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.runtime.Platform.run(Platform.java:888) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175) at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:1012) at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:481) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.runtime.Platform.run(Platform.java:888) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175) at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2111) at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:827) at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:802) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:776) at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:639) at org.eclipse.jface.viewers.AbstractTreeViewer.handleTreeExpand(AbstractTreeViewer.java:1442) at org.eclipse.jface.viewers.TreeViewer.handleTreeExpand(TreeViewer.java:937) at org.eclipse.jface.viewers.AbstractTreeViewer$4.treeExpanded(AbstractTreeViewer.java:1453) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:126) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1176) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1200) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1185) at org.eclipse.swt.widgets.Tree.gtk_test_expand_row(Tree.java:2062) at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1601) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4197) at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method) at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.java:7586) at org.eclipse.swt.widgets.Display.eventProc(Display.java:1185) at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method) at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:1858) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3110) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) I tried to create a .zip with a buggy jar, but the problem didn't happen when I imported it. But it can be reproduced by using the attached jar and following the steps below: 1.Create a new java project 2.Outside eclipse, add baddie.jar to the project's directory 3.Refresh the project on Eclipse 4.Add baddie.jar to the classpath. If it doesn't complain right away, try to refresh the project. I know that this particular JAR has an invalid entry and it should be fixed, but sometimes it's out of our control, and Eclipse should just issue a warning reporting the problem (rather than making the whole project unusable).
Created attachment 163892 [details] Proposed Patch Fix addresses cases where the referenced library entry is invalid or has zero segments. Tests added in ClasspathTests#testBug308150()
Created attachment 163990 [details] Updated patch Fixed an error with the previous patch.
Released in HEAD for 3.6M7.
Just came across a related issue. In the above steps to reproduce, I omit step 2 and 3, and use "add external jars" to add the baddie.jar from my downloads folder directly into the classpath, and hit OK - I get the following error message - "Setting build path has encountered a problem" 'C:\Documents and Settings\Administrator' is not a valid location for linked resources. Now, I can see baddie.jar added to the referenced libraries of my project. But checking out the build path or .classpath, I cannot find baddie.jar. This means that even though Eclipse has removed it, the referenced libraries is still showing it. Again, I go to build path -> add external jars and again add baddie.jar. This fails via an exception eclipse.buildId=I20100424-2000 java.version=1.6.0_17 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US Command-line arguments: -os win32 -ws win32 -arch x86 Exception while updating external folders org.eclipse.core.internal.resources.ResourceException: 'C:\Documents and Settings\Administrator' is not a valid location for linked resources. at org.eclipse.core.internal.resources.Resource.assertLinkRequirements(Resource.java:166) at org.eclipse.core.internal.resources.Resource.createLink(Resource.java:655) at org.eclipse.core.internal.resources.Resource.createLink(Resource.java:629) at org.eclipse.jdt.internal.core.ExternalFoldersManager.createLinkFolder(ExternalFoldersManager.java:113) at org.eclipse.jdt.internal.core.ExternalFolderChange.updateExternalFoldersIfNecessary(ExternalFolderChange.java:47) at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:1981) at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:470) at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:291) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:285) at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:149) at org.eclipse.core.internal.resources.Workspace.broadcastBuildEvent(Workspace.java:311) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:136) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) After this if i go the build path I can see baddie.jar added there and can remove it. But all this seems a bit ambiguous. Jay, can you clarify?
Raised bug 310764 as a follow up for comment 4.
Verified for 3.6M7 using build I20100424-2000.
Verified.