【问题标题】:Ant task for compiling GUI forms (Intellij IDEA)用于编译 GUI 表单的 Ant 任务(Intellij IDEA)
【发布时间】:2010-08-08 13:55:55
【问题描述】:

如何在 Intellij IDEA 中创建一个 Ant 任务来编译 GUI 表单 (XML)?我在我的项目中使用 Scala 和 Java。 Java 仅用于 GUI 类,我使用 Intellij IDEA UI Designer 创建它。

【问题讨论】:

  • 如何从 CMD.exe 窗口执行此操作?
  • 我不使用windows,但我不知道。

标签: java user-interface scala ant intellij-idea


【解决方案1】:

请不要打败我,但在设置“生成 Ant Build”后 - 对话框如下:

错误消失了:

【讨论】:

  • 感谢您发布/分享此内容!试图弄清楚为什么我的 ${idea.home} 属性没有被设置,并在生成的 ant 构建脚本文件中显示为错误。令人惊讶的是,单个复选框会造成多大的悲伤。
【解决方案2】:

IDEA 提供了一个 Ant 任务 javac2 来执行此操作。它是标准 javac Ant 任务的直接替代品。

首先,您需要在 Ant 构建文件的顶部附近添加类似以下内容。

<path id="javac2.class.path">
    <pathelement location="${idea.dir}/redist/forms_rt.jar"/>
    <pathelement location="${idea.dir}/redist/javac2.jar"/>
    <pathelement location="${idea.dir}/redist/annotations.jar"/>
</path>
<taskdef name="javac2" classname="com.intellij.ant.Javac2" classpathref="javac2.class.path"/>

这里的“${idea.dir}”指的是你的IDEA安装目录。这些 jar 是可再分发的,因此您可以根据需要将它们复制到您的项目中,并在那里引用它们。完成此操作后,只需将所有对“javac”任务的调用替换为“javac2”即可,一切正常。

当然,要编译 scala,您需要调用 scalac 或 fsc,但这些都不受所有这些影响。

【讨论】:

  • Ant show me: "/My/project/path/build.xml:16: taskdef class com.intellij.ant.Javac2 cannot be found",为什么?
  • 我将“redist”更改为“lib”,然后 Ant 没有显示这些错误。现在,Ant 告诉我这个错误:/My/project/path/build.xml:16: taskdef A class required by class com.intellij.ant.Javac2 cannot be found: org/objectweb/asm/ClassVisitor
  • 嗯,看来您还需要添加 。不知道为什么你的 jars 在 lib 而不是 redist 中。社区版,可能吗?
【解决方案3】:

同样的问题。 以这种方式解决:

<property  name="idea.lib" value="C:\\Program Files (x86)\\JetBrains\\IntelliJ IDEA Community Edition 9.0.3\\lib"/>

<path id="javac2.classpath">
    <pathelement location="${idea.lib}/javac2.jar"/>
    <pathelement location="${idea.lib}/jdom.jar"/>
    <pathelement location="${idea.lib}/asm.jar"/>
    <pathelement location="${idea.lib}/asm-commons.jar"/>
    <pathelement location="${idea.lib}/jgoodies-forms.jar"/>
</path>
<taskdef name="javac2" classname="com.intellij.ant.Javac2" classpathref="javac2.classpath"/>

【讨论】:

  • 在我的 compile.classpath 我还必须添加这个:
【解决方案4】:

既然这出现在谷歌上,这是需要的:

<property name="javac2.home" value="${idea.home}/lib"/>
<path id="javac2.classpath">
    <pathelement location="${javac2.home}/asm.jar"/>
    <pathelement location="${javac2.home}/asm-all.jar"/>
    <pathelement location="${javac2.home}/javac2.jar"/>
    <pathelement location="${javac2.home}/jdom.jar"/>
    <pathelement location="${javac2.home}/asm-commons.jar"/>
    <pathelement location="${javac2.home}/jgoodies-forms.jar"/>
</path>

解决 ClassReader 和 ClassWriter 错误的关键是 asm 和 asm-all。我不得不查看罐子才能找到答案。 “javac2.home”将取决于操作系统。这是在 Intellij Ultimate 上。

【讨论】:

  • 谢谢。对我来说,我必须查看实际的 /lib 文件夹。在我的 IDEA 版本中,asm JAR 的文件名中有版本号,必须在此处添加。
【解决方案5】:

这是正确的方法:

<property  name="javac2.home" value="C:\\Program Files (x86)\\JetBrains\\\IntelliJ IDEA 14.1.4\\lib"/>
<path id="javac2.classpath">
      <pathelement location="${javac2.home}/asm.jar"/>
      <pathelement location="${javac2.home}/asm-all.jar"/>
      <pathelement location="${javac2.home}/javac2.jar"/>
      <pathelement location="${javac2.home}/jdom.jar"/>
      <pathelement location="${javac2.home}/asm-commons.jar"/>
      <pathelement location="${javac2.home}/jgoodies-forms.jar"/>
 </path>

适用于 Intellij Community 和 Ultimate。在两者中都进行了测试。只需将其更改为您的 Intellij Community 路径,例如“IntelliJ IDEA Community Edition 14.1.4”。

【讨论】:

  • 实际上,请查看下面 Martin Pfeffer 的答案,了解设置“javac2.home”属性的更好/非硬编码方式。虽然您的方法确实有效,但让 IDE 为您完成似乎是一条更好的路线。
猜你喜欢
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 2019-09-14
  • 2014-04-25
相关资源
最近更新 更多