IDESigner中的Lambda表达式和Java 1.8

IDESigner中的Lambda表达式和Java 1.8,java,swing,lambda,java-8,Java,Swing,Lambda,Java 8,我正在尝试将Java 1.8与lambda表达式一起使用Idea UI Designer,我在maven中有: <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>ideauidesigner-maven-plugin</artifactId> <executions> <execution>

我正在尝试将
Java 1.8
与lambda表达式一起使用
Idea UI Designer
,我在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>

您是否知道如何将lambdas与
Idea UI Designer
一起使用?

在有人修复插件之前,一个解决方法是将IntelliJ设置配置为将GUI作为源代码而不是二进制文件生成,然后,在运行Maven之前,在GUI designer中进行任何更改时,手动重新生成GUI源:

  • 转到文件>设置并将编辑器>GUI设计器>生成GUI的选择更改为:Java源代码
  • 每当进行GUI更改时,从IntelliJ构建项目以(重新)生成GUI Java源代码(build>>build project
  • 或者,将生成的源代码检查到您正在使用的任何源代码控制机制中;这一步使其他通过Maven构建项目的人不必在以后从IntelliJ进行手动构建(也就是说,他们可以单独通过Maven进行构建)
  • 如果您正在使用IntelliJ布局管理器(如
    GridLayoutManager
    ),请在
    pom.xml
    中添加
    com.IntelliJ:forms\u rt:7.0.3
    作为编译依赖项
  • 像往常一样运行Maven来构建您的项目

  • GUI设计器的问题在于它没有一个可以使用的maven直截了当的插件,因为Intellij使用ant对target.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>
    
    
    maven antrun插件
    1.7
    com.sun
    工具
    1.7.0
    系统
    ${java.home}/./lib/tools.jar
    编译
    跑
    
    但是您需要将javac2 JAR放在/antlibs中,在我的项目中,我使用这些:

    • asm-5.0.3.jar
    • asm-all-7.0.1.jar
    • javac2.jar
    • jdom.jar
    您可以在${Intellij.home}/libs中找到这些库


    如果您使用特定的IDE布局,可能需要其他特定的JAR,如果您遗漏了某些内容,ant插件将是特定的

    您找到解决方案了吗?不,如果我有源代码,我可以只更新依赖项,也许你可以试着把问题发送给JetBrains?我刚刚发现问题是JetBrains实际上没有一个用于UI设计器的官方maven插件。IDESigner maven插件是由其他人编写的。如果JetBrains有一个官方插件就好了,但我想需求量还不够。所以也许我们应该试着给写这个插件的人发个短信,你和那个人有联系吗?他以前在我现在工作的地方工作过。我不认识他,但我想我可以联系他问问。我想我也会尝试向JetBrains提交一个官方插件的请求。
    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]
    
             <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>