当前位置: 首页 > 知识库问答 >
问题:

IdeaUIDesigner中的Lambda表达式和Java 1.8

郎弘壮
2023-03-14

我正在尝试将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>

和依赖关系

<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一起使用有何想法?

共有3个答案

司马自明
2023-03-14

插件组织。科德豪斯。mojo:ideauidesigner-maven插件:1.0-beta-1对Jetbrains通过com提供的代码有2个依赖项。intellij:javac2:7.0.3和com。intellij:forms\u rt:7.0.3(上一次更新于2008年)。自那以后,这些都没有直接更新过,但有Jetbrains在其自己的存储库中托管的现代等价物。

所要做的就是覆盖插件依赖项:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>ideauidesigner-maven-plugin</artifactId>
    <version>1.0-beta-1</version>
    <dependencies>
        <dependency>
            <groupId>com.jetbrains.intellij.java</groupId>
            <artifactId>java-compiler-ant-tasks</artifactId>
            <version>212.5284.40</version>
        </dependency>
        <dependency>
            <groupId>com.jetbrains.intellij.java</groupId>
            <artifactId>java-gui-forms-rt</artifactId>
            <version>212.5284.40</version>
        </dependency>
    </dependencies>
</plugin>

并包括Jetbrains插件库

<pluginRepositories>
    <pluginRepository>
        <id>intellij-repository</id>
        <url>https://www.jetbrains.com/intellij-repository/releases</url>
    </pluginRepository>
    <pluginRepository>
        <id>intellij-third-party</id>
        <url>https://cache-redirector.jetbrains.com/intellij-dependencies</url>
    </pluginRepository>
</pluginRepositories>
仉昂熙
2023-03-14

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。罐子

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

如果你使用特定的IDE布局,也许你会需要其他特定的罐关于他们,蚂蚁插件将是特定的,如果你错过了一些东西

景宏盛
2023-03-14

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

  1. 转到文件
 类似资料:
  • (译注:目前支持lambda的gcc编译器版本为4.5,其它详细的编译器对于C++11新特性的支持请参考http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport) Lambda表达式是一种描述函数对象的机制,它的主要应用是描述某些具有简单行为的函数(译注:Lambda表达式也可以称为匿名函数,具有复杂行为的函数可以采用命名函数对象,当然,何谓复杂

  • Lambda表达式在Java 8中引入,并被吹捧为Java 8的最大特性.Lambda表达式有助于函数式编程,并简化了很多开发。 语法 (Syntax) lambda表达式的特征在于以下语法。 parameter -> expression body 以下是lambda表达式的重要特征。 Optional type declaration - 无需声明参数类型。 编译器可以从参数的值推断出相同的

  • 问题内容: Java8中添加了Lambda表达式。我想理解为什么这很重要。对于尚未接触函数式编程习惯的Java程序员意味着什么?这是否意味着我可以编写出性能更好的代码或可大规模扩展的代码,还是只会使代码的详细程度降低。或全部。 问题答案: Oracle已经提供了有关该主题的教程。它列出了几个很好的用例。 在找到链接之前,我要说的是lambda表达式可让您将“函数”传递给代码。因此,您可以更轻松地编

  • 主要内容:函数式接口Lambda 表达式(Lambda expression)是一个匿名函数,基于数学中的λ演算得名,也可称为 闭包(Closure)。现在很多语言都支持 Lambda 表达式,如 C++、 C#、 Java、 Python 和 JavaScript 等。 Lambda 表达式是推动 Java 8 发布的重要新特性,它允许把函数作为一个方法的参数(函数作为参数传递进方法中),下面通过例 1 来理解 L

  • 1 Java8 Lambda表达式的介绍 Lambda表达式是Java8中包含的一项新的重要功能。它提供了一种简洁明了的方式来使用表达式表示一个方法接口。在Collection集合中非常有用。它有助于集合元素的迭代,过滤和从集合中提取数据。 Lambda表达式用于提供具有功能接口的接口的实现。它节省了大量代码。在使用Lambda表达式的情况下,我们无需再次定义用于提供实现的方法。我们只编写实现代码

  • 31 捕获的潜在问题 值捕获只保存捕获时的对象状态 int x = 1; auto f = [x] { return x; }; auto g = [x]() mutable { return ++x; }; x = 33; // 不改变 lambda 中已经捕获的 x std::cout << f() << g(); // 12 引用捕获会保持与被捕获对象状态一致 int x = 1; aut