我有一个在GUI设计器的帮助下创建的项目.这是主要形式的代码.
public class MainForm {
MainForm() {
directLineOkButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//some action
}
}
});
crossLineOkButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//some action
});
clearButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//some action
});
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//some action
});
saveButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//some action
});
}
public JPanel getMainPanel() {
return mainPanel;
}
private void createUIComponents() {
drawingPanel = new DrawingPanel(); …Run Code Online (Sandbox Code Playgroud) 我正在使用IntelliJ IDEA的GUI设计器和Maven构建系统.当我JAR通过这个答案构建可执行文件时,构建成功.但是,它通过命令启动时抛出异常java -jar MyApplication.jar:
Exception in thread "main" java.awt.IllegalComponentStateException: contentPane cannot be set to null.
at javax.swing.JRootPane.setContentPane(JRootPane.java:621)
at javax.swing.JFrame.setContentPane(JFrame.java:698)
...
Run Code Online (Sandbox Code Playgroud)
受影响的代码行如下:
setContentPane(panel);
Run Code Online (Sandbox Code Playgroud)
从源代码运行时IntelliJ,它工作正常,但Maven似乎没有正确构建JAR文件.毕竟,IntelliJ通过链接到一个.form文件来保持"神奇",以保持.java源代码文件不受GUI代码的影响.
我还找到了一个可能的解决方案,其中包括在pom.xml文件中添加一个特殊的插件,似乎可以在这里为IntelliJGUI设计器提供构建支持.所以我再次跑,它没有任何错误,但没有改变.mvn clean compile assembly:single
如果我这样做mvn deploy,插件会抛出以下错误:
[ERROR] Failed to execute goal org.codehaus.mojo:ideauidesigner-maven-plugin:1.0-beta-1:javac2 (default) on project MyApplication: Execution default of goal org.codehaus.mojo:ideauidesigner-maven-plugin:1.0-beta-1:javac2 failed: 16257 -> [Help 1]
[ERROR]
[ERROR] …Run Code Online (Sandbox Code Playgroud)