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

Bug 334852

Summary: Workflow for Domainmodel demo project is missing org.apache.commons.logging.Log
Product: [Modeling] TMF Reporter: Mirko Raner <mirko>
Component: XtextAssignee: Project Inbox <tmf.xtext-inbox>
Status: CLOSED FIXED QA Contact:
Severity: minor    
Priority: P3 CC: sven.efftinge
Version: unspecifiedFlags: sven.efftinge: indigo+
Target Milestone: M6   
Hardware: PC   
OS: Mac OS X - Carbon (unsup.)   
Whiteboard:

Description Mirko Raner CLA 2011-01-20 02:36:14 EST
Build Identifier: Indigo M4, Xtext 2.0.0 M4, Xtext ANTLR SDK 2.0.0 M3

In a fresh installation of Indigo M4 with a clean workspace the initial build of the "Domainmodel" demo fails with an exception in the MWE2 workflow:

2    [main] ERROR mf.mwe2.launch.runtime.Mwe2Launcher  - Lorg/apache/commons/logging/Log;
java.lang.NoClassDefFoundError: Lorg/apache/commons/logging/Log;
	at java.lang.Class.getDeclaredFields0(Native Method)
	at java.lang.Class.privateGetDeclaredFields(Class.java:2259)
	at java.lang.Class.getDeclaredFields(Class.java:1715)
	at org.eclipse.xtext.common.types.access.impl.DeclaredTypeFactory.createFields(DeclaredTypeFactory.java:272)
	at org.eclipse.xtext.common.types.access.impl.DeclaredTypeFactory.createType(DeclaredTypeFactory.java:81)
	at org.eclipse.xtext.common.types.access.impl.DeclaredTypeFactory.createType(DeclaredTypeFactory.java:1)
	at org.eclipse.xtext.common.types.access.impl.ClassMirror.initialize(ClassMirror.java:42)
	at org.eclipse.xtext.common.types.access.TypeResource.doLoad(TypeResource.java:86)
	at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1494)
	at org.eclipse.xtext.common.types.access.TypeResource.load(TypeResource.java:74)
	at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:255)
	at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:270)
	at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:397)
	at org.eclipse.xtext.resource.SynchronizedXtextResourceSet.getResource(SynchronizedXtextResourceSet.java:23)
	at org.eclipse.xtext.common.types.access.impl.ClasspathTypeProvider.findTypeByName(ClasspathTypeProvider.java:65)
	at org.eclipse.xtext.common.types.xtext.AbstractTypeScope.getLocalElements(AbstractTypeScope.java:55)
	at org.eclipse.xtext.scoping.impl.AbstractScope.getElements(AbstractScope.java:55)
	at org.eclipse.xtext.linking.impl.ImportedNamesAdapter$WrappingScope.getElements(ImportedNamesAdapter.java:55)
	at org.eclipse.xtext.scoping.impl.AbstractScope.getElements(AbstractScope.java:57)
	at org.eclipse.xtext.scoping.impl.ImportScope.getElements(ImportScope.java:88)
	at org.eclipse.xtext.scoping.impl.AbstractScope.getElements(AbstractScope.java:57)
	at org.eclipse.xtext.scoping.impl.ImportScope.getElements(ImportScope.java:88)
	at org.eclipse.xtext.scoping.impl.ImportScope$4.apply(ImportScope.java:147)
	at org.eclipse.xtext.scoping.impl.ImportScope$4.apply(ImportScope.java:1)
	at com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:431)
	at java.util.AbstractList$Itr.next(AbstractList.java:422)
	at com.google.common.collect.Iterators$7.computeNext(Iterators.java:602)
	at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:135)
	at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:130)
	at com.google.common.collect.Iterators$8.hasNext(Iterators.java:693)
	at com.google.common.collect.Iterators$5.hasNext(Iterators.java:504)
	at org.eclipse.xtext.scoping.impl.ImportScope$5.iterator(ImportScope.java:166)
	at com.google.common.collect.Iterables$3.apply(Iterables.java:422)
	at com.google.common.collect.Iterables$3.apply(Iterables.java:420)
	at com.google.common.collect.Iterators$8.next(Iterators.java:697)
	at com.google.common.collect.Iterators$5.hasNext(Iterators.java:505)
	at com.google.common.collect.Iterators$7.computeNext(Iterators.java:601)
	at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:135)
	at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:130)
	at com.google.common.collect.Iterators$5.hasNext(Iterators.java:504)
	at org.eclipse.xtext.scoping.impl.AbstractScope.getSingleElement(AbstractScope.java:47)
	at org.eclipse.xtext.linking.impl.DefaultLinkingService.getLinkedObjects(DefaultLinkingService.java:114)
	at org.eclipse.xtext.linking.lazy.LazyLinkingResource.getEObject(LazyLinkingResource.java:168)
	at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getEObject(ResourceSetImpl.java:219)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:202)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:262)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eResolveProxy(BasicEObjectImpl.java:1483)
	at org.eclipse.emf.mwe2.language.mwe2.impl.ReferrableImpl.getType(ReferrableImpl.java:98)
	at org.eclipse.emf.mwe2.language.mwe2.impl.ReferrableImpl.eGet(ReferrableImpl.java:177)
	at org.eclipse.emf.mwe2.language.mwe2.impl.ComponentImpl.eGet(ComponentImpl.java:220)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1021)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1013)
	at org.eclipse.emf.ecore.util.EContentsEList$FeatureIteratorImpl.hasNext(EContentsEList.java:409)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolveCrossReferences(EcoreUtil.java:307)
	at org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(EcoreUtil.java:301)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:82)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:75)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:66)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:57)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.run(Mwe2Launcher.java:74)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.main(Mwe2Launcher.java:35)

Adding a Require-Bundle for org.apache.commons.logging in the MANIFEST.MF for org.eclipse.xtext.example.domainmodel fixes this problem.

I'm not exactly sure why commons.logging is not on the classpath when the Mwe2Launcher is executed. org.apache.commons.cli (which is a required bundle) does have a dependency on commons.logging but does not reexport it. org.eclipse.emf.mwe.utils imports the org.apache.commons.logging package, but does not specifically require the bundle (i.e., leaving it open where the package eventually comes from). Since the Mwe2Launcher is not run as an Eclipse plug-in the resolution might be slightly different from what it would be for running an actual plug-in.


Reproducible: Always
Comment 1 Sven Efftinge CLA 2011-03-26 15:51:28 EDT
was fixed in M6
Comment 2 Karsten Thoms CLA 2017-09-19 17:54:31 EDT
Closing all bugs that were set to RESOLVED before Neon.0
Comment 3 Karsten Thoms CLA 2017-09-19 18:05:23 EDT
Closing all bugs that were set to RESOLVED before Neon.0