gpt4 book ai didi

java - 如何使用独立编译器编译 Xtend 源代码?

转载 作者:行者123 更新时间:2023-12-01 12:31:40 25 4
gpt4 key购买 nike

这是我的第一个问题。

我按照下面的说明创建了 Xtend 的独立编译器。

  • 使用 AntIvy 构建
  • 目录为:lib/build/
  • “xtend-compiler.jar”将在build/上输出
  • 库在 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.xml:

<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>


<小时/>

构建 Jar 文件后,我尝试运行

java -jar build/xtend-compiler.jar

这表明:

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

然后我要编译HelloWorld.xtend:

class HelloWorld {
def static void main(String[] args) {
System.out.println("Hello World")
}
}

但我做不到。例如:

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)

源文件位于resource目录中。

如何编译?

补充

我找到了org.eclipse.xtend.core.compiler.batch.Main的来源:

https://github.com/eclipse/xtext/blob/master/plugins/org.eclipse.xtend.core/src/org/eclipse/xtend/core/compiler/batch/Main.java

我正在阅读它,但现在我不明白要为参数添加什么。

最佳答案

我自己解决了。

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 - 如何使用独立编译器编译 Xtend 源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25883483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com