I have an XText 2.12 project (developing cut off from the internet, btw) consisting of 2 interconnected languages. Using some third-party libs, I want to create a generator to generate JSON from the DSL files. In Eclipse, I can create a runnable fat jar (Export - Java - Runnable JAR file) that works offline. It contains all necessary .class files plus all .xtendbin files.
Since we have an automatic building environment, I'm trying to create an Ant script to build this runnable JAR. It uses XtendCompilerAntTask to compile the xtend files (see build.xml snippet below). After compiling the resulting Java and packaging the dependency, the result is a runnable JAR that is exactly the same as the Eclipse-generated one, except for the .xtendbin files. This ANT-generated JAR does NOT work as a standalone generator, but produces a lot of errors, listed below.
The difference between the 2 jars is that the working one contains .xtendbin and ._trace files. Everything else seems to be the same, including the manifest (which has the same content in different order only).
Best regards,
Marc
Xtend compilation:
------------------
<taskdef name="xtend.compiler" classname="org.eclipse.xtend.core.compiler.batch.XtendCompilerAntTask" classpathref="@{classpathref}" />
<xtend.compiler destdir="xtend-gen" classpathref="@{classpathref}" failonerror="true">
<srcdir path="src" />
<srcdir path="src-gen/" />
</xtend.compiler>
Console output:
---------------
0 ERROR AntlrTokenDefProvider - java.lang.NullPointerException
java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:78)
at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
at org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.createReader(AntlrTokenDefProvider.java:97)
at org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.getTokenDefMap(AntlrTokenDefProvider.java:48)
at org.eclipse.xtext.parser.antlr.XtextTokenStream.<init>(XtextTokenStream.java:51)
at org.eclipse.xtext.parser.antlr.AbstractAntlrParser.createTokenStream(AbstractAntlrParser.java:161)
at org.eclipse.xtext.parser.antlr.AbstractAntlrParser.doParse(AbstractAntlrParser.java:89)
at org.eclipse.xtext.parser.antlr.AbstractAntlrParser.parse(AbstractAntlrParser.java:84)
at org.eclipse.xtext.parser.antlr.AbstractAntlrParser.doParse(AbstractAntlrParser.java:62)
at org.eclipse.xtext.parser.AbstractParser.parse(AbstractParser.java:33)
at org.eclipse.xtext.resource.XtextResource.doLoad(XtextResource.java:176)
at org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLoad(LazyLinkingResource.java:100)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1518)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1297)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:259)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:274)
at org.eclipse.xtext.resource.XtextResourceSet.getResource(XtextResourceSet.java:265)
at org.eclipse.xtext.resource.SynchronizedXtextResourceSet.getResource(SynchronizedXtextResourceSet.java:25)
at org.inaetics.dsl.component.generator.Main.loadResources(Main.java:104)
at org.inaetics.dsl.component.generator.Main.runGenerator(Main.java:61)
at org.inaetics.dsl.component.generator.Main.main(Main.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.NullPointerException
at org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.getTokenDefMap(AntlrTokenDefProvider.java:77)
at org.eclipse.xtext.parser.antlr.XtextTokenStream.<init>(XtextTokenStream.java:51)
at org.eclipse.xtext.parser.antlr.AbstractAntlrParser.createTokenStream(AbstractAntlrParser.java:161)
at org.eclipse.xtext.parser.antlr.AbstractAntlrParser.doParse(AbstractAntlrParser.java:89)
at org.eclipse.xtext.parser.antlr.AbstractAntlrParser.parse(AbstractAntlrParser.java:84)
at org.eclipse.xtext.parser.antlr.AbstractAntlrParser.doParse(AbstractAntlrParser.java:62)
at org.eclipse.xtext.parser.AbstractParser.parse(AbstractParser.java:33)
at org.eclipse.xtext.resource.XtextResource.doLoad(XtextResource.java:176)
at org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLoad(LazyLinkingResource.java:100)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1518)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1297)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:259)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:274)
at org.eclipse.xtext.resource.XtextResourceSet.getResource(XtextResourceSet.java:265)
at org.eclipse.xtext.resource.SynchronizedXtextResourceSet.getResource(SynchronizedXtextResourceSet.java:25)
at org.inaetics.dsl.component.generator.Main.loadResources(Main.java:104)
at org.inaetics.dsl.component.generator.Main.runGenerator(Main.java:61)
at org.inaetics.dsl.component.generator.Main.main(Main.java:40)
... 5 more