Summary: | Run-time libraries exported through more than 2 plugins not in classpath | ||||||
---|---|---|---|---|---|---|---|
Product: | [Eclipse Project] PDE | Reporter: | Antonin Pokorny <ap> | ||||
Component: | Build | Assignee: | Rodrigo Peretti <rodrigo> | ||||
Status: | RESOLVED FIXED | QA Contact: | |||||
Severity: | normal | ||||||
Priority: | P2 | CC: | ahunter | ||||
Version: | 2.0 | Keywords: | readme | ||||
Target Milestone: | --- | ||||||
Hardware: | PC | ||||||
OS: | Windows 2000 | ||||||
Whiteboard: | |||||||
Attachments: |
|
Description
Antonin Pokorny
2002-06-13 03:32:13 EDT
Created attachment 1387 [details]
example
Seems like a bug. Needs further investigation. Yes, it is a bug in AbstractBuildScriptGenerator.addPrerequisiteLibraries(). When a plug-in exports a pre-requisite, instead of calling the same method ( AbstractBuildScriptGenerator.addPrerequisiteLibraries() ) for its pre- requisite, we only add its libraries (calling addLibraries()). So, if the pre- requisite plug-in also exports another plug-in, it won't be added to the compile path. The fix is trivial. We only need to call addPrerequisiteLibraries() instead of addLibraries(). Since addPrerequisiteLibraries() calls addLibraries() there is no major change in the algorithm. Recommend fixing. Is there any risk of encountering a project cycle in the proposed fix? If so this could hang Eclipse. Yes, it could happen. Just tried and got a StackOverflowError (runtime- workbench). Handling the project cycle would be a major change. Since the workaround is simple (writing a custom build.xml) we will defer the fix to after 2.0. Workaround: 1) Generate a build.xml using PDE Build (Create Plug-in JARs) 2) Edit the build.properties with the following line: custom = true 3) Add the missing JARs to the build.xml (javac task) 4) Release the new build.properties and build.xml to the repository Add to readme. Reopening. *** Bug 21405 has been marked as a duplicate of this bug. *** Fixed and released to HEAD. The cycle issue has also been handled. If a cycle is found a CoreException will be thrown. |