Java 如何使用独立编译器编译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

这是我的第一个问题

我用下面的说明创建了独立的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.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