【问题标题】:Java project runs in IDE (IntelliJ Idea) but fails to run after Maven buildJava 项目在 IDE (IntelliJ Idea) 中运行,但在 Maven 构建后无法运行
【发布时间】:2015-06-12 18:28:02
【问题描述】:

我有一个准备发布的 Java 项目,但我在最后一个障碍中绊倒了。该程序在 IDE 中运行良好,但是在我运行 mvn clean install 并成功创建目标 jar 之后,应用程序在命令行和 IDE 中都失败了。通过在 IDE 中进行重建,我可以让它在 IDE 中再次运行。

有没有其他人经历过类似的事情?

mvn clean install之后的错误是

2014-08-08_10:38:20.328 INFO  coza.modh.fxplatform.Controller - Application start
2014-08-08_10:38:20.344 INFO  c.m.f.c.p.DataSourceFactory - Connecting to Database.
2014-08-08_10:38:20.499 INFO  coza.modh.fxplatform.Controller - Model created
Exception in thread "main" java.lang.NullPointerException
    at coza.modh.fxplatform.view.MainView.<init>(MainView.java:46)
    at coza.modh.fxplatform.Controller.startup(Controller.java:40)
    at coza.modh.fxplatform.Application.main(Application.java:7)

失败的行如下所示:

setContentPane(contentPane);

如果我从 IDE 中重建,那么当它到达这里时变量不为空,但在 mvn 命令之后,当它到达这一点时变量为空。

编辑:有人指出它可能与我使用了 intelliJ GUI 设计器工具的事实有关,而 Maven 可能不适应它。可能吗?

【问题讨论】:

标签: java maven jar intellij-idea


【解决方案1】:

我今天遇到了类似的问题。解决问题 -

首先,在 pom.xml 中添加以下内容

<dependency>
   <groupId>com.intellij</groupId>
   <artifactId>forms_rt</artifactId>
   <version>5.0</version>
</dependency>

其次,正如您所说,使用正确的 maven 插件来创建构建。

请参阅this 了解分步说明。

【讨论】:

    【解决方案2】:

    contentPane 不太可能为空,但请检查。无论如何都要进行干净的构建。可能行号不完全正确。

    问题通常是资源,例如应用程序图标。

    • 它们不是文件,而是压缩在罐子里。 所以像 /src/main/resources/... 这样的路径是不行的。
    • Neiter 使用 反斜杠 \,并且
    • 此外,文件路径区分大小写

    【讨论】:

    • 出现问题后,我已经在 IDE 中调试它,它确实为 NULL。重建后,此时它不再为 NULL。一旦我运行mvn clean install 命令,它就会再次为NULL。
    • 因此,您获得的资源之一是具有 IDE 类路径的 IDE 构建产品(将 png 复制到 bin/target 左右:路径错误)。您可以随时使用 7zip/WinZip/IDE 查看 jar。
    【解决方案3】:

    这可能是由于库版本不同导致的,你在Eclipse中改变了构建路径吗? (项目-> 属性-> 构建路径-> 库)。应该只有“JRE 系统库”。如果还有更多,则可能会加载它而不是您的 Maven 依赖项之一。您使用“mvn clean install”意味着它是针对 Maven 依赖项编译的,因此它的运行方式不同。

    【讨论】:

      【解决方案4】:
      • 在运行代码之前在系统上安装Maven(没有IDE)
      • 确保已将系统属性 M2_HOME 设置为 Maven 安装位置,并将 Maven bin 文件夹添加到 PATH
      • 进入包含你项目的 pom.xml 的目录并输入“mvn install”加回车来构建你的项目

      • 如果是简单的项目,打包为 JAR,您可以在控制台中输入类似这样的内容来运行它:

      $ java -cp target/simple-1.0-SNAPSHOT.jar org.yourcompany.projectNam.App 并输入

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-29
        • 2018-06-13
        • 2017-07-21
        • 1970-01-01
        • 1970-01-01
        • 2017-01-18
        • 1970-01-01
        • 2018-02-23
        相关资源
        最近更新 更多