MWE2 and xpand outside eclipse [message #937659] |
Tue, 09 October 2012 06:41 |
Jim Van Dam Messages: 38 Registered: July 2009 |
Member |
|
|
We are trying to use mwe2 and xpand inside a gwt application, but get the following exception:
at com.google.inject.InjectorImpl$4.get(InjectorImpl.java:767) [com.google.inject-2.0.0.jar:]
at org.eclipse.xtext.resource.XtextResourceFactory.createResource(XtextResourceFactory.java:19) [org.eclipse.xtext-2.0.0.jar:]
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.createResource(ResourceSetImpl.java:425) [ecore-2.4.2.jar:]
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.createResource(ResourceSetImpl.java:414) [ecore-2.4.2.jar:]
at org.eclipse.xtext.resource.SynchronizedXtextResourceSet.createResource(SynchronizedXtextResourceSet.java:30) [org.eclipse.xtext-2.0.0.jar:]
at org.eclipse.xtext.mwe.RuntimeResourceSetInitializer.getInitializedResourceSet(RuntimeResourceSetInitializer.java:76) [org.eclipse.xtext-2.0.0.jar:]
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.findModule(Mwe2Runner.java:112) [org.eclipse.emf.mwe2.launch-2.0.0.jar:]
at nl.infodation.emr.pricingservice.rulegeneration.MyRunner.findModule(MyRunner.java:13) [classes:]
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:77) [org.eclipse.emf.mwe2.launch-2.0.0.jar:]
Cause: com.google.inject.ProvisionException: Guice provision errors:
1) Error injecting method, java.lang.NoClassDefFoundError: org/eclipse/xtext/impl/GrammarImpl
at org.eclipse.xtext.conversion.impl.AbstractDeclarativeValueConverterService.setGrammar(AbstractDeclarativeValueConverterService.java:50)
while locating org.eclipse.emf.mwe2.language.Mwe2ValueConverters
while locating org.eclipse.xtext.conversion.IValueConverterService
for field at org.eclipse.xtext.linking.impl.LinkingHelper.valueConverter(LinkingHelper.java:31)
while locating org.eclipse.xtext.linking.impl.LinkingHelper
for field at org.eclipse.xtext.parsetree.reconstr.impl.CrossReferenceSerializer.linkingHelper(CrossReferenceSerializer.java:34)
while locating org.eclipse.xtext.parsetree.reconstr.impl.CrossReferenceSerializer
while locating org.eclipse.xtext.parsetree.reconstr.ITokenSerializer$ICrossReferenceSerializer
for field at org.eclipse.xtext.parsetree.reconstr.impl.AbstractParseTreeConstructor.crossRefSerializer(AbstractParseTreeConstructor.java:62)
while locating org.eclipse.emf.mwe2.language.parseTreeConstruction.Mwe2ParsetreeConstructor
while locating org.eclipse.xtext.parsetree.reconstr.IParseTreeConstructor
for parameter 0 at org.eclipse.xtext.parsetree.reconstr.Serializer.<init>(Serializer.java:39)
while locating org.eclipse.xtext.parsetree.reconstr.Serializer
while locating org.eclipse.xtext.serializer.ISerializer
for field at org.eclipse.xtext.resource.XtextResource.serializer(XtextResource.java:349)
while locating org.eclipse.xtext.linking.lazy.LazyLinkingResource
while locating org.eclipse.xtext.resource.XtextResource
Caused by: java.lang.NoClassDefFoundError: org/eclipse/xtext/impl/GrammarImpl
at org.eclipse.xtext.impl.XtextFactoryImpl.createGrammar(XtextFactoryImpl.java:100)
at org.eclipse.xtext.impl.XtextFactoryImpl.create(XtextFactoryImpl.java:63)
at org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl.createObject(XMLHelperImpl.java:891)
at org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl.createObject(XMLHelperImpl.java:928)
at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createObjectFromFactory(XMLHandler.java:2186)
at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createObjectByType(XMLHandler.java:1330)
at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createTopObject(XMLHandler.java:1468)
at org.eclipse.emf.ecore.xmi.impl.XMLHandler.processElement(XMLHandler.java:1019)
at org.eclipse.emf.ecore.xmi.impl.XMIHandler.processElement(XMIHandler.java:83)
at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:1001)
at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:712)
at org.eclipse.emf.ecore.xmi.impl.XMIHandler.startElement(XMIHandler.java:169)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:496)
at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:789)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:827)
at org.apache.xerces.impl.XMLDocumentScannerImpl$ContentDispatcher.scanRootElementHook(XMLDocumentScannerImpl.java:1141)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1754)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:324)
at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:845)
at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:768)
at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108)
at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1196)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:555)
at org.apache.xerces.jaxp.SAXParserImpl.parse(SAXParserImpl.java:289)
at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl.java:181)
at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(XMLResourceImpl.java:180)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1445)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1241)
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.parser.BaseEPackageAccess.loadResource(BaseEPackageAccess.java:52)
at org.eclipse.xtext.parser.BaseEPackageAccess.loadGrammarFile(BaseEPackageAccess.java:44)
at org.eclipse.xtext.service.GrammarProvider.getGrammar(GrammarProvider.java:49)
at org.eclipse.emf.mwe2.language.services.Mwe2GrammarAccess.getGrammar(Mwe2GrammarAccess.java:744)
at org.eclipse.xtext.conversion.impl.AbstractDeclarativeValueConverterService.setGrammar(AbstractDeclarativeValueConverterService.java:50)
at $org.eclipse.xtext.conversion.impl.AbstractDeclarativeValueConverterService$$FastClassByGuice$$7fdb40ee.invoke(<generated>)
at com.google.inject.internal.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at com.google.inject.SingleMethodInjector$1.invoke(SingleMethodInjector.java:59)
at com.google.inject.SingleMethodInjector.inject(SingleMethodInjector.java:91)
at com.google.inject.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:99)
at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:94)
at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111)
at com.google.inject.FactoryProxy.get(FactoryProxy.java:56)
at com.google.inject.SingleFieldInjector.inject(SingleFieldInjector.java:56)
at com.google.inject.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:99)
at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:94)
at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111)
at com.google.inject.SingleFieldInjector.inject(SingleFieldInjector.java:56)
at com.google.inject.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:99)
at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:94)
at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111)
at com.google.inject.InjectorImpl$3.get(InjectorImpl.java:549)
at com.google.inject.SingleFieldInjector.inject(SingleFieldInjector.java:56)
at com.google.inject.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:99)
at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:94)
at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111)
at com.google.inject.FactoryProxy.get(FactoryProxy.java:56)
at com.google.inject.SingleParameterInjector.inject(SingleParameterInjector.java:42)
at com.google.inject.SingleParameterInjector.getAll(SingleParameterInjector.java:66)
at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:84)
at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111)
at com.google.inject.FactoryProxy.get(FactoryProxy.java:56)
at com.google.inject.SingleFieldInjector.inject(SingleFieldInjector.java:56)
at com.google.inject.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:99)
at com.google.inject.ConstructorInjector.construct(ConstructorInjector.java:94)
at com.google.inject.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:111)
at com.google.inject.FactoryProxy.get(FactoryProxy.java:56)
at com.google.inject.InjectorImpl$4$1.call(InjectorImpl.java:758)
at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:804)
at com.google.inject.InjectorImpl$4.get(InjectorImpl.java:754)
at org.eclipse.xtext.resource.XtextResourceFactory.createResource(XtextResourceFactory.java:19)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.createResource(ResourceSetImpl.java:425)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.createResource(ResourceSetImpl.java:414)
at org.eclipse.xtext.resource.SynchronizedXtextResourceSet.createResource(SynchronizedXtextResourceSet.java:30)
at org.eclipse.xtext.mwe.RuntimeResourceSetInitializer.getInitializedResourceSet(RuntimeResourceSetInitializer.java:76)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.findModule(Mwe2Runner.java:112)
The java code that calls the mwe2 workflow looks like this:
Injector i = new Mwe2StandaloneSetup().createInjectorAndDoEMFRegistration();
Mwe2Runner runner = i.getInstance(MyRunner.class);
IWorkflowContext context = new WorkflowContextImpl();
context.put("rules", rules);
context.put("targetDir", file.getParentFile().getAbsolutePath());
context.put("ruleFile", file.getName());
runner.run("workflow.GenerateRules", new HashMap<String, String>(), context);
As the GrammarImpl is in the xtext-2.0.0.jar which is obviously there looking at the call stack, it looks like it has something to do with providing the right paths to the runner so the injected provider can find everything.
Does anybody recognize this or has experience using mwe2 and xpand in a web app outside eclipse?
Jim
|
|
|
Re: MWE2 and xpand outside eclipse [message #937755 is a reply to message #937659] |
Tue, 09 October 2012 08:27 |
|
Jim,
this looks indeed strange. I could not really see why this should happen. Please make sure that the Jar that you have on the classpath really has this class (I could not imagine why it shouldn't if you got it from official sites). The other thing I would do is to set an exception breakpoint on NoClassDefFoundError and inspect the classloader.
Regards,
~Karsten
Need professional support for Xtext, EMF, Eclipse IDE?
Go to: http://devhub.karakun.com
Twitter : @kthoms
Blog : www.karsten-thoms.de
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03734 seconds