java - 如何将 GCJ 与 Ant 一起使用?

标签 java ant gcj

我对 Apache Ant 和 GCJ 都很陌生,我很难尝试通过 Ant 使用 GCJ 进行构建。

我的应用程序是在 Scala 中,所以我需要使用 GCJ 将 .class 文件作为源。使用 Ant 将 .scala 编译为 .class 没问题。

首先,我想出了如何手动将 .class 文件编译为 .o(对象)的方法:

gcj --classpath=(...) -c (somepath)MouseClickListener.class -o (somepath)MouseClickListener.o

我看到 here Ant 通过 javac 标签支持 GCJ 编译。所以我认为这应该有效:

<target name="gcjCompile" depends="compile">
    <mkdir dir="${object.dir}" />
    <javac srcdir="${build.dir}"
           destdir="${object.dir}"
           compiler="gcj"
           executable="C:/gcc/gcc-4.3/bin/gcj.exe"
           classpathref="gcjProject.classpath">
        <include name="**/*.class"/>
    </javac>
</target>

但是这个 javac 任务什么都不做,我也没有收到任何错误。有什么线索吗? 谢谢

最佳答案

听起来您想将您的应用程序链接到 native 可执行文件中。这意味着您已经将源代码编译成 JVM 字节码(正如您通过将 .scala 编译成 .class 文件所想的那样)。您需要运行 gcj使用 <exec> 手动命令将字节码编译成 gcc 目标代码文件的任务。

我推荐这样的东西:

<property name="main.class" value="Main" />
<property name="class.dir" value="${basedir}/classes" />
<target name="compile">
  <mkdir dir="${class.dir}" />
  <javac srcdir="${build.dir}"
         destdir="${class.dir}"
         compiler="gcj"
         executable="C:/gcc/gcc-4.3/bin/gcj.exe"
         classpathref="gcjProject.classpath">
    <include name="**/*.java"/>
  </javac>
</target>
<target name="link" depends="compile">
  <mkdir dir="${object.dir"} />
  <exec cmd="C:/gcc/gcc-4.3/bin/gcj.exe">
    <arg value="-classpath=${object.dir}" />
    <arg value="-c" />
    <arg value="*.class" />
  </exec>
</target>

请记住,您需要定义 build.dirobject.dir属性,您可能需要添加 depends编译目标中 javac 之前的任务(或者每次都从头开始重新编译)。我可能错过了很多东西,如果一开始它不起作用,您应该检查手册页(gcj、gcc 和 ant)。

关于java - 如何将 GCJ 与 Ant 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2404763/

相关文章:

java - 必填国家组合框

java 包和 "sub packges"- 请澄清

ant - 使用 Ant 遍历目录

java - 可以使用 GCJ 生成可从 Python 调用的库吗?

java - 您如何将正确的 ABI 版本与外部 jar 的 GCJ 链接起来?

java - 程序或包 gcjh 在哪里?

java - 如何在 Java 中通过 Desktop 对象打开 URL?

java - Hadoop MapReduce Java 实现中的 Reducer

java - build.properties 和 build.xml

ant - 你把 ivysettings.xml 放在哪里?