Register Xtext Resource Factory in Xtend [message #1851084] |
Sun, 27 March 2022 15:16 |
John Henbergs Messages: 239 Registered: October 2020 |
Senior Member |
|
|
Hi,
I am trying to use n Xtext file (the instance of my dsl), as input to Xtend to generate code. I am getting the following error:
Exception in thread "main" org.eclipse.emf.ecore.resource.impl.ResourceSetImpl$1DiagnosticWrappedException: org.xml.sax.SAXParseExceptionpublicId: file:/Users/User/runtime-Transf/tranform/A2B.mydsl; systemId: file:/Users/User/runtime-Transf/tranform/A2B.mydsl; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.handleDemandLoadException(ResourceSetImpl.java:319)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:278)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:406)
at xtendpaxckage.transform.Setup(transform.java:195)
....
From what I read, this usually occurs when there are issues with registering Resource Factories.
I know how to do that for Ecore or Xmi resource factories , but not for Xtext.
In this thread https://bugs.eclipse.org/bugs/show_bug.cgi?id=531399 I see it says I have to register by using doSetup and so I did.
In Xtend I have this now:
def Setup(){
resourceSet = new ResourceSetImpl();
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl());
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(Resource.Factory.Registry.DEFAULT_EXTENSION, new EcoreResourceFactoryImpl());
MyDslStandaloneSetup.doSetup
resource = resourceSet.getResource( URI.createFileURI(new File("A2B.mydsl").getAbsolutePath()), true);
}
However, when I do this I get the following error:
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/xtext/ISetup
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
Am I doing something wrong in this last step, or is this not the correct way at all to register the resource correctly?
Thank you!
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03298 seconds