Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 25126

Summary: Cannot open cu outside classpath
Product: [Eclipse Project] JDT Reporter: Jerome Lanneluc <jerome_lanneluc>
Component: UIAssignee: Kai-Uwe Maetzel <kai-uwe_maetzel>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: P1    
Version: 2.0   
Target Milestone: 2.1 M3   
Hardware: PC   
OS: Windows 2000   
Whiteboard:

Description Jerome Lanneluc CLA 2002-10-21 11:54:55 EDT
Build 20021018 + latest jdt core

1. Create Java project 'P' with 'src' source folder
2. Create file P/X.java
Observe: You get the following exception:
Java Model Exception: Java Model Status [ does not exist.]
        at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException
(JavaElement.java:489)
        at 
org.eclipse.jdt.internal.core.PackageFragmentRoot.getUnderlyingResource
(PackageFragmentRoot.java:299)
        at org.eclipse.jdt.internal.core.PackageFragment.getUnderlyingResource
(PackageFragment.java:247)
        at org.eclipse.jdt.internal.core.Openable.getUnderlyingResource
(Openable.java:235)
        at 
org.eclipse.jdt.internal.core.CompilationUnit.getCorrespondingResource
(CompilationUnit.java:391)
        at 
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$BufferFac
tory.createBuffer(CompilationUnitDocumentProvid
        at org.eclipse.jdt.internal.core.WorkingCopy.openBuffer
(WorkingCopy.java:355)
        at org.eclipse.jdt.internal.core.Openable.getBuffer(Openable.java:192)
        at org.eclipse.jdt.internal.core.CompilationUnit.getContents
(CompilationUnit.java:374)
        at org.eclipse.jdt.internal.compiler.parser.Parser.parse
(Parser.java:7048)
        at 
org.eclipse.jdt.internal.compiler.SourceElementParser.parseCompilationUnit
(SourceElementParser.java:1047)
        at org.eclipse.jdt.internal.core.CompilationUnit.generateInfos
(CompilationUnit.java:330)
        at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure
(CompilationUnit.java:84)
        at org.eclipse.jdt.internal.core.Openable.openWhenClosed
(Openable.java:395)
        at org.eclipse.jdt.internal.core.Openable.open(Openable.java:346)
        at org.eclipse.jdt.internal.core.WorkingCopy.open(WorkingCopy.java:344)
        at org.eclipse.jdt.internal.core.CompilationUnit.getWorkingCopy
(CompilationUnit.java:609)
        at org.eclipse.jdt.internal.core.CompilationUnit.getSharedWorkingCopy
(CompilationUnit.java:581)
        at 
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.createEle
mentInfo(CompilationUnitDocumentProvider.java:8
        at org.eclipse.ui.texteditor.AbstractDocumentProvider.connect
(AbstractDocumentProvider.java:297)
        at org.eclipse.ui.texteditor.AbstractTextEditor.doSetInput
(AbstractTextEditor.java:2086)
        at org.eclipse.ui.texteditor.StatusTextEditor.doSetInput
(StatusTextEditor.java:160)
        at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor.doSetInput
(JavaEditor.java:561)
        at 
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSetInput
(CompilationUnitEditor.java:1016)
        at org.eclipse.ui.texteditor.AbstractTextEditor.init
(AbstractTextEditor.java:1687)
        at org.eclipse.ui.internal.EditorManager.createSite
(EditorManager.java:562)
        at org.eclipse.ui.internal.EditorManager.openInternalEditor
(EditorManager.java:612)
        at org.eclipse.ui.internal.EditorManager.openEditorFromDescriptor
(EditorManager.java:427)
        at org.eclipse.ui.internal.EditorManager.openEditorFromInput
(EditorManager.java:304)
        at org.eclipse.ui.internal.EditorManager.openEditor
(EditorManager.java:392)
        at org.eclipse.ui.internal.WorkbenchPage.openEditor
(WorkbenchPage.java:1757)
        at org.eclipse.ui.internal.WorkbenchPage.openEditor
(WorkbenchPage.java:1643)
        at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor
(EditorUtility.java:129)
        at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor
(EditorUtility.java:102)
        at org.eclipse.jdt.internal.ui.actions.OpenActionUtil.open
(OpenActionUtil.java:47)
        at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:164)
        at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:153)
        at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun
(SelectionDispatchAction.java:191)
        at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run
(SelectionDispatchAction.java:169)
        at 
org.eclipse.jdt.internal.ui.packageview.PackageExplorerActionGroup.handleOpen
(PackageExplorerActionGroup.java:317)
        at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart$5.open
(PackageExplorerPart.java:292)
        at org.eclipse.jface.viewers.StructuredViewer.fireOpen
(StructuredViewer.java:320)
        at org.eclipse.jface.viewers.StructuredViewer.handleOpen
(StructuredViewer.java:494)
        at org.eclipse.jface.viewers.StructuredViewer$3.handleOpen
(StructuredViewer.java:581)
        at org.eclipse.jface.util.OpenStrategy.fireOpenEvent
(OpenStrategy.java:204)
        at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:199)
        at org.eclipse.jface.util.OpenStrategy$1.mouseSelectItem
(OpenStrategy.java:338)
        at org.eclipse.jface.util.OpenStrategy$1.handleEvent
(OpenStrategy.java:283)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:77)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:833)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1622)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1368)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1420)
        at org.eclipse.ui.internal.Workbench.run(Workbench.java:1403)
        at org.eclipse.core.internal.boot.InternalBootLoader.run
(InternalBootLoader.java:775)
        at org.eclipse.core.boot.BootLoader.run(BootLoader.java:462)
        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:324)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:247)
        at org.eclipse.core.launcher.Main.run(Main.java:703)
        at org.eclipse.core.launcher.Main.main(Main.java:539)
Comment 1 Jerome Lanneluc CLA 2002-10-21 11:57:46 EDT
To reproduce, you need to get org.eclipse.jdt.core from HEAD.
It contains a fix for bug 25041 that expose this problem in the 
CompilationUnitDocumentProvider. This document provider should use getResource
() instead of getUnderlyingResource().
Comment 2 Kai-Uwe Maetzel CLA 2002-10-22 05:27:54 EDT
Build I20021022.
Comment 3 Jerome Lanneluc CLA 2002-10-23 06:50:29 EDT
I can still see 2 references to getUnderlyingResource() in 
CompilationUnitDocumentProvider.java. These are bound to fail if the original 
element is not on the classpath. As I said before, you should use getResource().
Comment 4 Kai-Uwe Maetzel CLA 2002-10-30 12:10:28 EST
Fixed > I20021029.
Comment 5 Adam Kiezun CLA 2002-11-14 09:07:31 EST
verified on M3