Lambda expressions and Java 1.8 in IdeaUIDesigner

2022-09-04 03:50:24

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

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

你有什么想法如何使用 lambdas 与 ?Idea UI Designer


答案 1

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

  1. 转到“文件>设置”,并将“编辑器> GUI 设计器”>“将 GUI 生成为:更改为 Java 源代码
  2. 每当您进行 GUI 更改时,请从 IntelliJ 生成项目以(重新)生成 GUI Java 源代码(生成>>生成项目)。
  3. (可选)将生成的源代码签入您正在使用的任何源代码管理机制中;此步骤使通过 Maven 构建项目的其他任何人不必稍后从 IntelliJ 手动构建(即,这样他们就可以仅通过 Maven 进行构建)。
  4. 如果您使用的是 IntelliJ 布局管理器(如 ),则在 中添加为编译依赖项(如果尚未添加)。GridLayoutManagercom.intellij:forms_rt:7.0.3pom.xml
  5. 像往常一样运行 Maven 来构建你的项目。

答案 2

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中,在我的项目中,我使用这些:

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

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

如果您使用特定的IDE布局,也许您将需要有关它们的其他特定jar,如果您错过了某些内容,ant插件将是特定的


推荐