在IdeaUIDesigner中的Lambda表达式和Java 1.8

时间:2015-08-21 07:48:13

标签: java swing lambda java-8

我正在尝试将Java 1.8Idea UI Designer的lambda表达式一起使用,我在maven中:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>ideauidesigner-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>javac2</goal>
            </goals>
        </execution>
    </executions>

    <configuration>
        <fork>true</fork>
        <debug>true</debug>
        <failOnError>true</failOnError>
    </configuration>
</plugin>

和依赖

<dependency>
    <groupId>com.intellij</groupId>
    <artifactId>forms_rt</artifactId>
    <version>7.0.3</version>
</dependency>

当我尝试使用lambdas时,它返回编译错误:

Failed to execute goal org.codehaus.mojo:ideauidesigner-maven-plugin:1.0-beta-1:javac2 (default) on project stockbox-chart: Execution default of goal org.codehaus.mojo:ideauidesigner-maven-plugin:1.0-beta-1:javac2 failed: 52264 -> [Help 1]

您对如何在Idea UI Designer使用lambdas有任何想法吗?

2 个答案:

答案 0 :(得分:5)

一个解决方法,直到有人能够修复插件,是配置IntelliJ设置以生成GUI作为源而不是二进制文件,然后手动重新生成GUI源之前在GUI设计器中进行更改时运行Maven:

  1. 转到文件&gt;设置并更改编辑器&gt;的选择GUI Designer&gt;将GUI生成为: Java源代码
  2. 每当您进行GUI更改时,从IntelliJ构建项目以(重新)生成GUI Java源代码(构建&gt;&gt;构建项目)。
  3. 或者,将生成的源检查为您正在使用的任何源控制机制;这一步节省了通过Maven构建项目的其他人以后必须从IntelliJ进行手动构建(即他们只能通过Maven构建)。
  4. 如果您正在使用IntelliJ布局管理器(例如GridLayoutManager),请在com.intellij:forms_rt:7.0.3中添加pom.xml作为编译依赖项,如果它尚未存在
  5. 像往常一样运行Maven来构建项目。

答案 1 :(得分:0)

GUI 设计器的问题在于它没有可以使用的 Maven 直接插件,因为 Intellij 使用 ant 对目标 .class 文件进行后处理。您可以使用 maven ant 插件:

         <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <dependencies>
                <dependency>
                    <groupId>com.sun</groupId>
                    <artifactId>tools</artifactId>
                    <version>1.7.0</version>
                    <scope>system</scope>
                    <systemPath>${java.home}/../lib/tools.jar</systemPath>
                </dependency>
            </dependencies>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <configuration>
                        <tasks>
                            <path id="j2cp">
                                <fileset dir="${project.basedir}/antlibs" includes="*.jar"/>
                            </path>
                            <path id="j2sp">
                                <pathelement location="${project.basedir}/src/main/java"/>
                            </path>

                            <taskdef name="javac2" classpathref="j2cp" classname="com.intellij.ant.Javac2"/>
                            <javac2 destdir="${project.basedir}/target/classes"> 
                                <src refid="j2sp"/>
                            </javac2>
                        </tasks>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

但是您需要将 javac2 jar 放在 /antlibs 中,在我的项目中我使用这些:

  • asm-5.0.3.jar
  • asm-all-7.0.1.jar
  • javac2.jar
  • jdom.jar

您可以在 ${Intellij.home}/libs 中找到这些库

如果你使用特定的 IDE 布局,也许你需要其他特定的 jars,如果你错过了什么,ant 插件将是特定的