Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编译GUI表单的Ant任务(Intellij IDEA)_Java_User Interface_Scala_Ant_Intellij Idea - Fatal编程技术网

Java 编译GUI表单的Ant任务(Intellij IDEA)

Java 编译GUI表单的Ant任务(Intellij IDEA),java,user-interface,scala,ant,intellij-idea,Java,User Interface,Scala,Ant,Intellij Idea,如何创建Ant任务以在Intellij IDEA中编译GUI表单(XML)?我在项目中使用Scala和Java。Java仅用于GUI类,我使用Intellij IDEA UI Designer创建它。IDEA提供了一个Ant任务javac2,可以实现这一点。它是标准javac-Ant任务的替代品 首先,您需要在Ant构建文件的顶部包含如下内容 <path id="javac2.class.path"> <pathelement location="${idea.dir}

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

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,但这些调用不会受到所有这些的影响。

这里也有同样的问题。 解决方法如下:

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

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

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


关键是asm和asm,它们都解决了类读取器和类编写器错误。我得看看罐子里有没有这个。“javac2.home”将依赖于操作系统。这是Intellij Ultimate上的内容。

以下是正确的方法:

<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社区和Ultimate。在这两个方面都进行了测试。只需将其更改为您的Intellij社区路径,例如“Intellij IDEA Community Edition 14.1.4”。

请不要击败我,但在设置“生成Ant构建”对话框后,如:

错误消失了:


如何从CMD.exe窗口执行此操作?我不使用windows,但我不知道。Ant告诉我:“/My/project/path/build.xml:16:taskdef class com.intellij.Ant.Javac2找不到”,为什么?我将“redist”改为“lib”,然后Ant不向我显示这些错误。现在,Ant告诉我这个错误:/My/project/path/build.xml:16:taskdef找不到com.intellij.Ant.Javac2类所需的类:org/objectweb/asm/classvisitorhm,看起来您也需要添加。不知道为什么JAR在lib中而不是redist中。社区版,可能吗?在我的compile.classpath中,我还必须添加以下内容:感谢您发布/共享此内容!试图找出为什么没有设置我的${idea.home}属性,并在生成的ant构建脚本文件中显示为错误。一个复选框会造成多大的痛苦,这让人惊讶。实际上,看看Martin Pfeffer下面的答案,可以找到一种更好的/非硬编码的方式来设置“javac2.home”属性。虽然您的方法确实有效,但让IDE为您做这件事似乎是更好的选择。谢谢。对我来说,我必须查看实际的/lib文件夹。在我的IDEA版本中,asm JAR的文件名中有版本号,必须添加到这里。