Java 如何使用独立编译器编译Xtend源代码?
这是我的第一个问题 我用下面的说明创建了独立的Xtend编译器Java 如何使用独立编译器编译Xtend源代码?,java,jar,xtend,Java,Jar,Xtend,这是我的第一个问题 我用下面的说明创建了独立的Xtend编译器 用蚂蚁和常春藤建造 目录为:lib/,build/ “xtend compiler.jar”将在构建时输出 库在lib/ Jar文件包含依赖库 主类是org.eclipse.xtend.core.compiler.batch.Main build.xml: <project name="xtend-compiler" default="jar-run" basedir="." xmlns:ivy="antlib:org.a
- 用蚂蚁和常春藤建造
- 目录为:lib/,build/
- “xtend compiler.jar”将在构建时输出
- 库在lib/
- Jar文件包含依赖库
- 主类是org.eclipse.xtend.core.compiler.batch.Main
<project name="xtend-compiler" default="jar-run" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
<property name="lib.dir" value="lib" />
<property name="build.dir" value="build" />
<path id="lib.path.id">
<fileset dir="${lib.dir}"/>
</path>
<!-- resolve -->
<target name="resolve">
<mkdir dir="${lib.dir}"/>
<ivy:retrieve pattern="${lib.dir}/[artifact].[ext]"/>
</target>
<!-- jar -->
<target name="jar">
<delete dir="${build.dir}"/>
<copy file="${lib.dir}/org.eclipse.xtend.standalone.jar" tofile="${build.dir}/xtend-compiler.jar"/>
<jar update="true" destfile="${build.dir}/xtend-compiler.jar">
<zipgroupfileset dir="${lib.dir}" includes="**/*.jar" excludes="org.eclipse.xtend.standalone.jar"/>
<manifest>
<attribute name="Main-Class" value="org.eclipse.xtend.core.compiler.batch.Main"/>
</manifest>
</jar>
</target>
<!-- run -->
<target name="run">
<java jar="${build.dir}/xtend-compiler.jar" fork="true">
</java>
</target>
<target name="jar-run" depends="jar,run">
</target>
</project>
<ivy-module version="2.0">
<info organisation="" module="xtend-compiler"/>
<configurations>
<conf name="web"/>
</configurations>
<dependencies>
<dependency org="org.eclipse.xtend" name="org.eclipse.xtend.standalone" rev="2.4.3" conf="web->default"/>
</dependencies>
</ivy-module>
这表明:
Usage: Main <options> <source directories>
where possible options include:
-d <directory> Specify where to place generated xtend files
-tp <path> Temp directory to hold generated stubs and classes
-cp <path> Specify where to find user class files
-encoding <encoding> Specify character encoding used by source files
-useCurrentClassLoader Use current classloader as parent classloader
但我不能那样做。例如:
java -jar build/xtend-compiler.jar HelloWorld.xtend
Exception in thread "main" java.lang.NullPointerException
at java.io.File.<init>(File.java:277)
at org.eclipse.xtend.core.compiler.batch.XtendBatchCompiler.configureWorkspace(XtendBatchCompiler.java:258)
at org.eclipse.xtend.core.compiler.batch.XtendBatchCompiler.compile(XtendBatchCompiler.java:273)
at org.eclipse.xtend.core.compiler.batch.Main.main(Main.java:48)
java-jarbuild/xtend-compiler.jar HelloWorld.xtend
线程“main”java.lang.NullPointerException中出现异常
在java.io.File.(File.java:277)
位于org.eclipse.xtend.core.compiler.batch.XtendBatchCompiler.configureWorkspace(XtendBatchCompiler.java:258)
位于org.eclipse.xtend.core.compiler.batch.XtendBatchCompiler.compile(XtendBatchCompiler.java:273)
位于org.eclipse.xtend.core.compiler.batch.Main.Main(Main.java:48)
源文件位于资源目录中
如何编译
补充
我找到了org.eclipse.xtend.core.compiler.batch.Main的源代码:
class HelloWorld {
def static void main(String[] args) {
System.out.println("Hello World")
}
}
我正在读,但现在我不明白该为论点添加什么。我自己解决了
java -jar build/xtend-compiler.jar -cp build/xtend-compiler.jar resource -d .
# 0 [main] INFO e.compiler.batch.XtendBatchCompiler - Compiling 1 source file to .
# 0 [main] INFO org.eclipse.xtend.core.compiler.batch.XtendBatchCompiler - Compiling 1 source file to .
javac -cp build/xtend-compiler.jar:. HelloWorld.java
java -cp build/xtend-compiler.jar:. HelloWorld
# Hello World
java -jar build/xtend-compiler.jar -cp build/xtend-compiler.jar resource -d .
# 0 [main] INFO e.compiler.batch.XtendBatchCompiler - Compiling 1 source file to .
# 0 [main] INFO org.eclipse.xtend.core.compiler.batch.XtendBatchCompiler - Compiling 1 source file to .
javac -cp build/xtend-compiler.jar:. HelloWorld.java
java -cp build/xtend-compiler.jar:. HelloWorld
# Hello World