大约一年前,这里也提出了类似的问题。然而,我发现这个问题缺少一些细节和要点,并且没有给出正确的答案。所以我重新提出同样的问题。
我在IntelliJ IDEA中创建了一个Maven项目并在其中添加了一个GUI表单。默认情况下,IDEA为表单的结构创建了一个单独的XML文件。我的如下所示。
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="TestUI">
<grid id="27dc6" binding="panel1" default-binding="true" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<xy x="20" y="20" width="500" height="400"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="e40aa" class="javax.swing.JTextField" binding="txtTest">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="150" height="-1"/>
</grid>
</constraints>
<properties/>
</component>
</children>
</grid>
</form>
这有一个绑定到它的类,显示如下。
import javax.swing.*;
public class TestUI {
private JTextField txtTest;
private JPanel panel1;
public TestUI() {
String str = txtTest.getText();
JOptionPane.showMessageDialog(null, str);
createAndShowGui();
txtTest.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Clicked");
}
});
}
private void createAndShowGui(){
JFrame frame = new JFrame("test");
frame.setContentPane(panel1);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
TestUI obj = new TestUI();
}
}
此项目的POM. xml最初如下所示。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.company.test</groupId>
<artifactId>UITestWithIJ</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>TestUI</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
当这是一个磨合的想法,它的工作完美无瑕。因此,我使用组装插件通过Maven将其构建到一个胖jar中。然后,问题开始出现。当执行Maven创建的jar时,它抛出一个NullPointerException,如下所示。
user@group-PC09:~/.m2/repository/com/company/test/UITestWithIJ/1.0-SNAPSHOT$ java -jar UITestWithIJ-1.0-SNAPSHOT-jar-with-dependencies.jar
Exception in thread "main" java.lang.NullPointerException
at TestUI.<init>(TestUI.java:13)
at TestUI.main(TestUI.java:34)
我越挖越深,发现出现这种情况的原因是第13行中有标识符。此标识符绝不是初始化的。因此,它采用默认值null。所以我意识到问题实际上与IDEA有关,我只需要转换<代码>。将IDEA生成的文件格式化为JVM可以单独读取的格式。
经过研究,我可以在这里找到一个候选解决方案。根据其中的说明,我修改了我的POM。xml如下所示。
>
添加了以下依赖项
<dependency>
<groupId>com.intellij</groupId>
<artifactId>forms_rt</artifactId>
<version>7.0.3</version>
</dependency>
添加了以下插件
<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>
这就解决了问题。但是,在TestUI中。java您看到添加了一个事件侦听器。这可以用Java 8 forth中的lambda表达式代替。一旦我完成了替换,Maven就无法构建jar,并抛出以下错误。
user@group-PC09:~/IdeaProjects/UITestWithIJ$ mvn clean install
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.company.test:UITestWithIJ:jar:1.0-SNAPSHOT
[WARNING] 'build.plugins.plugin.version' for org.codehaus.mojo:ideauidesigner-maven-plugin is missing. @ line 53, column 21
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building UITestWithIJ 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ UITestWithIJ ---
[INFO] Deleting /home/user/IdeaProjects/UITestWithIJ/target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ UITestWithIJ ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.6.0:compile (default-compile) @ UITestWithIJ ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 1 source file to /home/user/IdeaProjects/UITestWithIJ/target/classes
[INFO]
[INFO] --- ideauidesigner-maven-plugin:1.0-beta-1:javac2 (default) @ UITestWithIJ ---
[INFO] Executing IDEA UI Designer task...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.227 s
[INFO] Finished at: 2016-12-29T11:11:43+05:30
[INFO] Final Memory: 17M/205M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:ideauidesigner-maven-plugin:1.0-beta-1:javac2 (default) on project UITestWithIJ: Execution default of goal org.codehaus.mojo:ideauidesigner-maven-plugin:1.0-beta-1:javac2 failed: 52264 -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
我已经停用了-X开关,发现这里实际上失败的是插件ideauidesigner-maven-plugin
的maven目标javac2
,唯一可能的原因是lambda表达式。插件中的一个方法会抛出一个ArrayIndexOutOfBoundsException
我已经检查了这个和Maven存储库中的依赖项forms_rt
,我注意到这些最后一次更新是在2009年和2010年。可能是插件无法处理lambda表达式。
以下是我的问题。
第一种可能性:
frame.setContentPane(panel1);
此处,pane1未初始化,为空。
第二种可能性:
String str = txtTest.getText();
JOptionPane.showMessageDialog(null, str);
您正在将null传递给showMessageDialog(),它需要父组件。
我在使用IntelliJ将我的项目转换为maven时遇到了这个问题。此过程自动创建包文件夹并将我的src文件放入其中。因此,我将包添加到所有文件的顶部。但当我的JFrame以前工作正常时,这会导致完全相同的错误。事实证明,在XML的表单文件中,绑定是错误的,因为我现在使用的是包
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="TestUI">
我更改了bind-to-class
属性以正确包含新包。这篇文章很旧,但它可能会帮助将来的人浏览这里。
我需要你的帮助,请理解调试一个maven应用程序使用Wildfly和Intellij的想法。 谢谢,
我是Java开发的新手,这里有一个问题:我生成了web应用程序 ,然后我添加了文件夹和简单的文件。通过命令在my localhost:8080/manager中,我可以看到我的web应用程序,但是我如何在其中添加我的jar文件呢?
我有一个带有Yarn的Flink集群,使用flink-quickstart-java原型构建一个演示项目。在使用'mvn clean package-pbuild-jar'命令构建fat-jar之后,并使用'flink run-m yar-cluster-yn2./flink-Snapshot-1.0.jar'提交程序,程序会抛出以下异常: 下面是我的演示: 和一些版本信息: FLink版本:1.
我有一个java应用程序,需要部署在weblogic服务器中。我目前正在为该应用程序制作ear文件。我的ear文件中有一个ejb jar。我想将log4j2 jar添加到此应用程序中。所以我的文件夹结构是 目前,我已经将JAR放在APP-INF文件夹/lib和META-INF/application中。xml我把JAR放在了模块中。这是我的申请表。xml 但它不接受log4j罐子。有什么解决方案吗
我正在尝试为我的所有TextViews/EditViews等设置自定义字体。我遵循这个答案:是否可以为整个应用程序设置自定义字体? 为此,我有一个<code>。ttfassets/font/myFont.ttf中的文件。要将此<code>字体: } 要将其添加到我的文本视图,我只需在布局中执行以下操作: 样式在哪里: 错误 我想我确实错过了一些非常简单的事情。这是LogCat:
我正在尝试将Realm添加到我的应用程序(Xamarin Android)中。首先从模拟器开始(Xaamrin android播放器-Nexus 5和androidLollipop)。 此处为Github问题 我的代码: 我得到的异常: 领域。RealmFileAccessErrorException:Realms.NativeCommon不允许执行操作。ExceptionThrower(IntP