Bug 279497 - [ajde] Problem with CoreOutpuLocationManager and elements in a classpath container
Summary: [ajde] Problem with CoreOutpuLocationManager and elements in a classpath cont...
Status: RESOLVED FIXED
Alias: None
Product: AJDT
Classification: Tools
Component: Core (show other bugs)
Version: unspecified   Edit
Hardware: All All
: P3 normal (vote)
Target Milestone: 1.6.6   Edit
Assignee: AJDT-inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-06-08 13:27 EDT by Andrew Eisenberg CLA
Modified: 2009-06-08 14:32 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrew Eisenberg CLA 2009-06-08 13:27:02 EDT
Described in bug 267794 c13.  There is a problem with the CoreOuputLocationManager.  It seems like it cannot handle elements from another project in a classpath container.  Here is the stack trace:

---------------------
ava.lang.IllegalArgumentException: Path must include project and resource name: /org.apache.xerces
at org.eclipse.core.runtime.Assert.isLegal(Assert.java:64)
at org.eclipse.core.internal.resources.Workspace.newResource(Workspace.java:1628)
at org.eclipse.core.internal.resources.Container.getFolder(Container.java:137)
at org.eclipse.ajdt.internal.core.ajde.CoreOutputLocationManager.pathToFile(CoreOutputLocationManager.java:630)
at org.eclipse.ajdt.internal.core.ajde.CoreOutputLocationManager.handleClassPathEntry(CoreOutputLocationManager.java:591)
at org.eclipse.ajdt.internal.core.ajde.CoreOutputLocationManager.mapProject(CoreOutputLocationManager.java:573)
at org.eclipse.ajdt.internal.core.ajde.CoreOutputLocationManager.handleClassPathEntry(CoreOutputLocationManager.java:601)
at org.eclipse.ajdt.internal.core.ajde.CoreOutputLocationManager.handleClassPathEntry(CoreOutputLocationManager.java:586)
at org.eclipse.ajdt.internal.core.ajde.CoreOutputLocationManager.mapProject(CoreOutputLocationManager.java:573)
at org.eclipse.ajdt.internal.core.ajde.CoreOutputLocationManager.handleClassPathEntry(CoreOutputLocationManager.java:601)
at org.eclipse.ajdt.internal.core.ajde.CoreOutputLocationManager.mapProject(CoreOutputLocationManager.java:573)
at org.eclipse.ajdt.internal.core.ajde.CoreOutputLocationManager.handleClassPathEntry(CoreOutputLocationManager.java:601)
at org.eclipse.ajdt.internal.core.ajde.CoreOutputLocationManager.mapProject(CoreOutputLocationManager.java:573)
at org.eclipse.ajdt.internal.core.ajde.CoreOutputLocationManager.initDeclaringProjectsMap(CoreOutputLocationManager.java:561)
at org.eclipse.ajdt.internal.core.ajde.CoreOutputLocationManager.findDeclaringProject(CoreOutputLocationManager.java:533)
at org.eclipse.ajdt.internal.core.ajde.CoreOutputLocationManager.discoverChangesSince(CoreOutputLocationManager.java:653)
at org.aspectj.ajde.core.internal.OutputLocationAdapter.discoverChangesSince(OutputLocationAdapter.java:62)
at org.aspectj.ajdt.internal.core.builder.AjState.classFileChangedInDirSinceLastBuildRequiringFullBuild(AjState.java:460)

and a comment about it:

--------------

xerces is a plug-in dependency. the xerces plugin is a updated copy of the org.apache.xerces plugin, bundled with eclipse, located in my workspace
form the project, that contains the xerces reference (project1): 
the .classpath:
<?xml version=?1.0?encoding=?UTF-8??>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="output" path="bin"/>
</classpath>

manifest.mf:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: 
Bundle-SymbolicName: com.project1; singleton:=true
Bundle-Version: 3.0.0
Bundle-ClassPath: .
Bundle-Vendor: 
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources,
org.eclipse.ui,
org.eclipse.gef,
org.eclipse.ui.views,
org.eclipse.ui.ide,
org.apache.xerces;bundle-version=?[2.9.0,3.0.0)?,
com.sun.jai;bundle-version="1.3.0"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5

classpath from the aspectj project:

<?xml version=?1.0? encoding=?UTF-8??>
<classpath>
<classpathentry excluding="/server/aspectj/RuntimeTimeTracing.aj|/server/aspectj/RuntimeTracing.aj" kind="src" path="src"/>
<classpathentry exported="true" kind="src" path="/project1"/>
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/com.api"/>
<classpathentry exported="true" kind="src" path="/com.server">
<attributes>
<attribute name="org.eclipse.ajdt.aspectpath" value="org.eclipse.ajdt.aspectpath"/>
</attributes>
</classpathentry>
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/com.support"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/com.context"/>
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/com.internationalisation.generator"/>
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/org.apache.commons-logging.libs"/>
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/com.lookup"/>
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/com.support.webapplication"/>
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/com.auth"/>
<classpathentry exported="true" kind="con" path="org.eclipse.ajdt.core.ASPECTJRT_CONTAINER">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value=""/>
</attributes>
</classpathentry>
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/com.eaio.uuid.libs"/>
<classpathentry exported="true" kind="lib" path="lib/quartz-1.6.5.jar">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="../"/>
</attributes>
</classpathentry>
<classpathentry exported="true" kind="lib" path="lib/commons-lang-2.4.jar">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="../"/>
</attributes>
</classpathentry>
<classpathentry exported="true" kind="lib" path="lib/commons-collections-3.2.jar">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="../"/>
</attributes>
</classpathentry>
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/org.hibernate.annotations"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Comment 1 Andrew Eisenberg CLA 2009-06-08 14:03:45 EDT
I notice that in your .classpath file, all of your paths are designated as absolute.

Is this because you are referencing these plugin projects directly?

This is in and of itself is not the problem in AJDT, but it seems that if one of these projects uses the proiject root as a source folder, then that is where errors occur.

I have made the change and it seems to be working.  I just need to do a little more testing and I will commit.
Comment 2 Andrew Eisenberg CLA 2009-06-08 14:32:14 EDT
OK...committed with regression tests will be available in next dev build.