Bug 246659 - Can't attach source directory to referenced jar file
Summary: Can't attach source directory to referenced jar file
Status: VERIFIED DUPLICATE of bug 243692
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.4   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: 3.5 M2   Edit
Assignee: JDT-Core-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-09-08 20:47 EDT by Brian Anderson CLA
Modified: 2008-09-16 05:38 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Brian Anderson CLA 2008-09-08 20:47:42 EDT
Build ID: I20080617-2000

Steps To Reproduce:
1. Add about 30 jar files are referenced libraries to a java project through the properties->Java Build Path->Libraries (tab).  Add the libraries through a "variable"
2. Use the package explorer and navigate to the referenced library section and open a class in the jar.
3. The class viewer will show the byte code and give you the "attach source button" which you click on and add the source directory.  Upon finishing this I get a "Attempted to beginRule: R/, does not match outer scope rule: P/Base" exception (I've added the stack trace below).  In this case the source is attached in spite of the error.
4.  Now add a source directory with a package structure that mirrors the jar you attached source to in step 3.
5.  Close the class in the jar file in (3) and try and reopen it;  the source is lost and when you try and attach it you get the same exception, but the source won't attach.
6.  Remove the source directory from 4.
7.  Close the class in the jar file from (5) and try and reopen it.  The source is still not attached, but when you try and attach it you get he behavior of (3) again.


More information:
The stack trace in the log is:
!ENTRY org.eclipse.jdt.ui 4 10001 2008-09-08 16:35:17.462
!MESSAGE Internal Error
!STACK 0
java.lang.reflect.InvocationTargetException
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:403)
	at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:507)
	at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:275)
	at org.eclipse.ui.internal.progress.ProgressManager$3.run(ProgressManager.java:977)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:1012)
	at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:987)
	at org.eclipse.ui.internal.progress.ProgressManager.run(ProgressManager.java:1195)
	at org.eclipse.jdt.internal.ui.javaeditor.ClassFileEditor$SourceAttachmentForm.applySourceAttachment(ClassFileEditor.java:303)
	at org.eclipse.jdt.internal.ui.javaeditor.ClassFileEditor$2.widgetSelected(ClassFileEditor.java:286)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1158)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3401)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3033)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
	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:193)
	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:382)
	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:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:616)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
Caused by: java.lang.IllegalArgumentException: Attempted to beginRule: R/, does not match outer scope rule: P/Base
	at org.eclipse.core.runtime.Assert.isLegal(Assert.java:64)
	at org.eclipse.core.internal.jobs.ThreadJob.illegalPush(ThreadJob.java:122)
	at org.eclipse.core.internal.jobs.ThreadJob.push(ThreadJob.java:232)
	at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:58)
	at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:230)
	at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:117)
	at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1747)
	at org.eclipse.core.internal.resources.File.setContents(File.java:364)
	at org.eclipse.jdt.internal.core.JavaProject.setSharedProperty(JavaProject.java:2885)
	at org.eclipse.jdt.internal.core.JavaProject.writeFileEntries(JavaProject.java:2651)
	at org.eclipse.jdt.internal.core.JavaModelManager$7.run(JavaModelManager.java:1188)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
	at org.eclipse.jdt.internal.core.JavaModelManager$PerProjectInfo.writeAndCacheClasspath(JavaModelManager.java:1182)
	at org.eclipse.jdt.internal.core.SetClasspathOperation.executeOperation(SetClasspathOperation.java:61)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:709)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
	at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:775)
	at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2815)
	at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2846)
	at org.eclipse.jdt.internal.ui.wizards.buildpaths.BuildPathSupport.updateProjectClasspath(BuildPathSupport.java:277)
	at org.eclipse.jdt.internal.ui.wizards.buildpaths.BuildPathSupport.modifyClasspathEntry(BuildPathSupport.java:186)
	at org.eclipse.jdt.internal.ui.wizards.buildpaths.SourceAttachmentBlock$1.run(SourceAttachmentBlock.java:587)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Root exception:
java.lang.IllegalArgumentException: Attempted to beginRule: R/, does not match outer scope rule: P/Base
	at org.eclipse.core.runtime.Assert.isLegal(Assert.java:64)
	at org.eclipse.core.internal.jobs.ThreadJob.illegalPush(ThreadJob.java:122)
	at org.eclipse.core.internal.jobs.ThreadJob.push(ThreadJob.java:232)
	at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:58)
	at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:230)
	at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:117)
	at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1747)
	at org.eclipse.core.internal.resources.File.setContents(File.java:364)
	at org.eclipse.jdt.internal.core.JavaProject.setSharedProperty(JavaProject.java:2885)
	at org.eclipse.jdt.internal.core.JavaProject.writeFileEntries(JavaProject.java:2651)
	at org.eclipse.jdt.internal.core.JavaModelManager$7.run(JavaModelManager.java:1188)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
	at org.eclipse.jdt.internal.core.JavaModelManager$PerProjectInfo.writeAndCacheClasspath(JavaModelManager.java:1182)
	at org.eclipse.jdt.internal.core.SetClasspathOperation.executeOperation(SetClasspathOperation.java:61)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:709)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
	at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:775)
	at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2815)
	at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2846)
	at org.eclipse.jdt.internal.ui.wizards.buildpaths.BuildPathSupport.updateProjectClasspath(BuildPathSupport.java:277)
	at org.eclipse.jdt.internal.ui.wizards.buildpaths.BuildPathSupport.modifyClasspathEntry(BuildPathSupport.java:186)
	at org.eclipse.jdt.internal.ui.wizards.buildpaths.SourceAttachmentBlock$1.run(SourceAttachmentBlock.java:587)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Comment 1 Jerome Lanneluc CLA 2008-09-09 06:46:08 EDT
Can this be reproduced in a pure Eclipse SDK (i.e. using eclipse-SDK-3.4-linux-gtk.tar.gz without any additional plugin)?


*** This bug has been marked as a duplicate of bug 243692 ***
Comment 2 David Audel CLA 2008-09-16 05:38:33 EDT
Verified for 3.5M2