Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » Buckminster » NoClassDefFoundError in qualifierGenerator
NoClassDefFoundError in qualifierGenerator [message #378566] Fri, 18 July 2008 11:48 Go to next message
Michael Pfeiffer is currently offline Michael PfeifferFriend
Messages: 34
Registered: July 2009
Member
Hi!

I have written a qualifierGenerator "cvsTag" that replaces the version
qualifier with the CVS tag.
It uses internal API from org.eclipse.team.cvs.core so I don't have to
reinvent the wheel. Since that API is not exported and it is made
available only to a small set of other plugins, I had to give my plugin
one of those plugin IDs. I choose org.eclipse.team.cvs.ui, because I need
this plugin for headless build only and the original plugin is not in
headless buckminster by default.

My problem is now that when buckminster tries to instantiate the
qualifierGenerator extension a NoClassDefFoundError for
org.eclipse.core.resources.IResource is thrown (see stacktrace at end of
post).

Any idea why this interface is not available for the extension?

Here is the code snipped. If I remove the code inside the try-catch block
that has dependencies to the eclipse resource plugin it can be
instantiated.

public class CvsTagQualifierGenerator implements IQualifierGenerator {

public CvsTagQualifierGenerator() {
}

public IVersion generateQualifier(IActionContext context,
ComponentIdentifier cid,
List<ComponentIdentifier> dependencies) throws CoreException {
IVersion currentVersion = cid.getVersion();
if (currentVersion == null)
return null;
try {
IPath location = WorkspaceInfo.getComponentLocation(cid);
log(cid + " location + " + location.toOSString());
ICVSResource cvsResource =
CVSWorkspaceRoot.getCVSResourceFor(WorkspaceInfo.getProject( cid));
if (cvsResource == null) {
log("No cvs resource found for component " + cid);
return currentVersion;
}
ResourceSyncInfo syncInfo = cvsResource.getSyncInfo();
if (syncInfo == null) {
log("No cvs sync info found for component " + cid);
return currentVersion;
}
CVSTag tag = syncInfo.getTag();
if (tag == null) {
log("No cvs tag found for component " + cid);
return currentVersion;
}
return currentVersion.replaceQualifier(tag.getName());
} catch (MissingComponentException e) {
log(e.toString());
// fall through
}
return currentVersion;
}

private void log(String message) {
System.err.println("CvsTagQualifierGenerator: " + message);
}
}

Kind Regards,
Michael

INFO: [start
at.scch.version.test:osgi.bundle$3.1.0.qualifier#OSGi#manife st]
[ant] WARN: Unable to qualify version
[ant] org.eclipse.core.runtime.CoreException: Plug-in
"org.eclipse.team.cvs.ui" was unable to instantiate class
"at.scch.team.ccvs.tag.generator.CvsTagQualifierGenerator".
[ant] at
org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI .throwException(RegistryStrategyOSGI.java:180)
[ant] at
org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI .createExecutableExtension(RegistryStrategyOSGI.java:174)
[ant] at
org.eclipse.core.internal.registry.ExtensionRegistry.createE xecutableExtension(ExtensionRegistry.java:867)
[ant] at
org.eclipse.core.internal.registry.ConfigurationElement.crea teExecutableExtension(ConfigurationElement.java:243)
[ant] at
org.eclipse.core.internal.registry.ConfigurationElementHandl e.createExecutableExtension(ConfigurationElementHandle.java: 51)
[ant] at
org.eclipse.buckminster.core.CorePlugin.getExecutableExtensi on(CorePlugin.java:320)
[ant] at
org.eclipse.buckminster.core.CorePlugin.getQualifierGenerato r(CorePlugin.java:368)
[ant] at
org.eclipse.buckminster.ant.tasks.VersionQualifierTask.repla ceQualifier(VersionQualifierTask.java:104)
[ant] at
org.eclipse.buckminster.pde.tasks.BundleConsolidator.run(Bun dleConsolidator.java:91)
[ant] at
org.eclipse.buckminster.pde.ant.BundleConsolidatorTask.execu te(BundleConsolidatorTask.java:33)
[ant] at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.j ava:288)
[ant] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ant] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[ant] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[ant] at java.lang.reflect.Method.invoke(Unknown Source)
[ant] at
org.apache.tools.ant.dispatch.DispatchUtils.execute(Dispatch Utils.java:105)
[ant] at org.apache.tools.ant.Task.perform(Task.java:348)
[ant] at org.apache.tools.ant.Target.execute(Target.java:357)
[ant] at org.apache.tools.ant.Target.performTasks(Target.java:385)
[ant] at
org.apache.tools.ant.Project.executeSortedTargets(Project.ja va:1329)
[ant] at org.apache.tools.ant.Project.executeTarget(Project.java:1298 )
[ant] at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(D efaultExecutor.java:41)
[ant] at
org.eclipse.ant.internal.core.ant.EclipseDefaultExecutor.exe cuteTargets(EclipseDefaultExecutor.java:32)
[ant] at org.apache.tools.ant.Project.executeTargets(Project.java:118 1)
[ant] at
org.eclipse.ant.internal.core.ant.InternalAntRunner.run(Inte rnalAntRunner.java:623)
[ant] at
org.eclipse.ant.internal.core.ant.InternalAntRunner.run(Inte rnalAntRunner.java:456)
[ant] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ant] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[ant] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[ant] at java.lang.reflect.Method.invoke(Unknown Source)
[ant] at org.eclipse.buckminster.ant.AntRunner.run(AntRunner.java:282 )
[ant] at
org.eclipse.buckminster.ant.actor.AntActor.internalPerform(A ntActor.java:162)
[ant] at
org.eclipse.buckminster.core.actor.AbstractActor.perform(Abs tractActor.java:128)
[ant] at
org.eclipse.buckminster.core.internal.actor.PerformManager.p erform(PerformManager.java:146)
[ant] at
org.eclipse.buckminster.core.internal.actor.PerformManager.p erform(PerformManager.java:75)
[ant] at
org.eclipse.buckminster.core.commands.Perform.internalRun(Pe rform.java:68)
[ant] at
org.eclipse.buckminster.core.commands.WorkspaceCommand.run(W orkspaceCommand.java:45)
[ant] at
org.eclipse.buckminster.cmdline.AbstractCommand.basicRun(Abs tractCommand.java:80)
[ant] at org.eclipse.buckminster.cmdline.Headless.run(Headless.java:1 88)
[ant] at org.eclipse.buckminster.cmdline.Headless.run(Headless.java:1 22)
[ant] at org.eclipse.buckminster.cmdline.Headless.start(Headless.java :113)
[ant] at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
[ant] at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
[ant] at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
[ant] at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:382)
[ant] at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
[ant] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ant] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[ant] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[ant] at java.lang.reflect.Method.invoke(Unknown Source)
[ant] at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
[ant] at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
[ant] at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
[ant] at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
[ant] Caused by: java.lang.NoClassDefFoundError:
org/eclipse/core/resources/IResource
[ant] at java.lang.Class.getDeclaredConstructors0(Native Method)
[ant] at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
[ant] at java.lang.Class.getConstructor0(Unknown Source)
[ant] at java.lang.Class.newInstance0(Unknown Source)
[ant] at java.lang.Class.newInstance(Unknown Source)
[ant] at
org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI .createExecutableExtension(RegistryStrategyOSGI.java:170)
[ant] ... 52 more
[ant] Caused by: java.lang.ClassNotFoundException:
org.eclipse.core.resources.IResource
[ant] at
org.eclipse.osgi.framework.internal.core.BundleLoader.findCl assInternal(BundleLoader.java:481)
[ant] at
org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:397)
[ant] at
org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:385)
[ant] at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loa dClass(DefaultClassLoader.java:87)
[ant] at java.lang.ClassLoader.loadClass(Unknown Source)
[ant] at java.lang.ClassLoader.loadClassInternal(Unknown Source)
[ant] ... 58 more
Re: NoClassDefFoundError in qualifierGenerator [message #378567 is a reply to message #378566] Fri, 18 July 2008 11:51 Go to previous messageGo to next message
Michael Pfeiffer is currently offline Michael PfeifferFriend
Messages: 34
Registered: July 2009
Member
The code snipped again, this time are the tabs replaced with spaces:

public class CvsTagQualifierGenerator implements IQualifierGenerator {

public CvsTagQualifierGenerator() {
}

public IVersion generateQualifier(IActionContext context,
ComponentIdentifier cid,
List<ComponentIdentifier> dependencies) throws CoreException {
IVersion currentVersion = cid.getVersion();
if (currentVersion == null)
return null;
try {
IPath location = WorkspaceInfo.getComponentLocation(cid);
log(cid + " location + " + location.toOSString());
ICVSResource cvsResource =
CVSWorkspaceRoot.getCVSResourceFor(WorkspaceInfo.getProject( cid));
if (cvsResource == null) {
log("No cvs resource found for component " + cid);
return currentVersion;
}
ResourceSyncInfo syncInfo = cvsResource.getSyncInfo();
if (syncInfo == null) {
log("No cvs sync info found for component " + cid);
return currentVersion;
}
CVSTag tag = syncInfo.getTag();
if (tag == null) {
log("No cvs tag found for component " + cid);
return currentVersion;
}
return currentVersion.replaceQualifier(tag.getName());
} catch (MissingComponentException e) {
log(e.toString());
// fall through
}
return currentVersion;
}

private void log(String message) {
System.err.println("CvsTagQualifierGenerator: " + message);
}
}
Re: NoClassDefFoundError in qualifierGenerator [message #378572 is a reply to message #378566] Mon, 21 July 2008 06:22 Go to previous message
Michael Pfeiffer is currently offline Michael PfeifferFriend
Messages: 34
Registered: July 2009
Member
Michael Pfeiffer wrote:

> Any idea why this interface is not available for the extension?

I solved the problem myself. I think it had to do with Eclipse using
cached dependency information. After increasing the version number of the
plugin an redeploying it the code gets executed.

Sorry for the noise.

Regards,
Michael
Previous Topic:Feature Dependencies
Next Topic:New version published
Goto Forum:
  


Current Time: Wed Apr 24 23:17:05 GMT 2024

Powered by FUDForum. Page generated in 0.02865 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top