【问题标题】:IntelliJ Fails Deploying exploded war to tomcatIntelliJ 无法将爆炸战争部署到 tomcat
【发布时间】:2017-11-02 14:50:22
【问题描述】:

我有一个使用 IntelliJ 开发并使用 Apache Tomcat 进行部署的 Java Web 应用程序。我定义了一些在团队中的每个人之间共享的运行配置。这些运行配置被定义为将爆炸的战争工件部署到本地 tomcat 中。其他团队成员能够正常部署和运行,但出现以下错误:

Artifact Gradle : project : project.war (exploded): Error during artifact deployment. See server log for details.
Artifact Gradle : project : project.war (exploded): com.intellij.javaee.oss.admin.jmx.JmxAdminException: com.intellij.execution.ExecutionException: /IdeaProjects/project/build/libs/exploded/project.war not found for the web module.

IntelliJ 似乎不想创建exploded/project.war 目录。如果我手动创建这些目录,我不会收到该错误消息,但没有任何 WAR 内容被放入目录中。

我认为这可能是权限错误,所以我什至尝试提供我的项目目录777 只是为了消除可能的问题。

有人遇到过这个问题吗?

我运行的是 MacOS 10.12,过去可以部署,但是这个问题才刚刚开始。

谢谢

更新

IntelliJ 日志并没有真正显示任何其他错误,只是显示上述错误的完整 StackTrace。

2017-11-02 11:20:52,896 [3777157]   INFO - erver.JavaeeServerInstanceImpl - com.intellij.execution.ExecutionException: <redacted>/build/libs/exploded/myproject.war not found for the web module. 
com.intellij.javaee.oss.admin.jmx.JmxAdminException: com.intellij.execution.ExecutionException: <redacted>/build/libs/exploded/myproject.war not found for the web module.
    at org.jetbrains.idea.tomcat.admin.TomcatAdminLocalServerImpl$DeployStep.perform(TomcatAdminLocalServerImpl.java:277)
    at org.jetbrains.idea.tomcat.admin.TomcatAdminLocalServerImpl.doDeploy(TomcatAdminLocalServerImpl.java:125)
    at com.intellij.javaee.oss.admin.jmx.JavaeeJmxAdminServerBase$4.doPerform(JavaeeJmxAdminServerBase.java:120)
    at com.intellij.javaee.oss.admin.jmx.JavaeeJmxAdminServerBase$JmxOperation.perform(JavaeeJmxAdminServerBase.java:243)
    at com.intellij.javaee.oss.admin.jmx.JavaeeJmxAdminServerBase.doStartDeploy(JavaeeJmxAdminServerBase.java:135)
    at com.intellij.javaee.oss.admin.jmx.JavaeeJmxAdminServerBase$2.setDeploymentStatus(JavaeeJmxAdminServerBase.java:90)
    at com.intellij.javaee.oss.admin.jmx.JavaeeJmxAdminServerBase$DeploymentModelOperation.doSetDeploymentStatus(JavaeeJmxAdminServerBase.java:270)
    at com.intellij.javaee.oss.admin.jmx.JavaeeJmxAdminServerBase$3.doPerform(JavaeeJmxAdminServerBase.java:100)
    at com.intellij.javaee.oss.admin.jmx.JavaeeJmxAdminServerBase$JmxOperation.perform(JavaeeJmxAdminServerBase.java:243)
    at com.intellij.javaee.oss.admin.jmx.JavaeeJmxAdminServerBase.doStartDeployWithUndeploy(JavaeeJmxAdminServerBase.java:107)
    at com.intellij.javaee.oss.admin.jmx.JavaeeJmxAdminServerBase.startDeploy(JavaeeJmxAdminServerBase.java:74)
    at org.jetbrains.idea.tomcat.admin.TomcatAdminServerBase.startDeploy(TomcatAdminServerBase.java:115)
    at org.jetbrains.idea.tomcat.admin.TomcatAdminLocalServerImpl.startDeploy(TomcatAdminLocalServerImpl.java:95)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.remoteServer.agent.impl.ThreadInvocationHandler.a(ThreadInvocationHandler.java:56)
    at com.intellij.remoteServer.agent.impl.ThreadInvocationHandler.a(ThreadInvocationHandler.java:100)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at com.intellij.util.concurrency.BoundedTaskExecutor$2.run(BoundedTaskExecutor.java:212)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: com.intellij.execution.ExecutionException: <redacted>/build/libs/exploded/myproject.war not found for the web module.
    at org.jetbrains.idea.tomcat.admin.TomcatAdminLocalServerImpl.addApplicationContext(TomcatAdminLocalServerImpl.java:217)
    at org.jetbrains.idea.tomcat.admin.TomcatAdminLocalServerImpl$4.doPerform(TomcatAdminLocalServerImpl.java:121)
    at org.jetbrains.idea.tomcat.admin.TomcatAdminLocalServerImpl$DeployStep.perform(TomcatAdminLocalServerImpl.java:274)
    ... 24 more

【问题讨论】:

  • 1.这看起来像是一个爆炸档案的奇怪路径。真的爆炸了吗? 2. 请检查您的项目设置 -> 工件所有输出目录。
  • 这实际上是为该工件定义的路径。我不确定它为什么选择使用名称中带有.war 的目录,但它会在从 Gradle 导入项目时生成所有这些工件。如果我有一个干净的构建,libs 目录将是空的,并且 IntelliJ 甚至无法创建 exploded 目录。
  • 查看~/IntelliJIdea2017.2/system/log/idea.log 了解更多信息。
  • 它只是为我在部署过程中遇到的错误提供了完整的堆栈跟踪,但并没有提供太多额外的信息。 (查看更新的问题)
  • 可能这与idea does not share the gradle build dir 有关。你用的是什么idea版本和gradle?

标签: intellij-idea


【解决方案1】:

在 Intellij 2019.2 之前:

在 Gradle 设置下,你必须确保你没有勾选 'Delegate IDE build/run actions to gradle'

自 Intellij 2019.2 起:

设置现在位于“构建、执行、部署 > 构建工具 > Gradle”下。 您必须选择 Build and run usingIntellij IDEA

一个issue 已在 jetbrains 错误跟踪器上打开。

【讨论】:

  • 2019.2没有Delegate IDE build/run actions to gradle选项,这个版本应该怎么解决?
  • @Erlan 我根据2019.2的变化编辑了我的答案
  • 我还发现,在 IntelliJ 中选择“用户 Gradle 来自”“Gradle 构建脚本中的包装器任务”选项之前,使用相同的排除项无法正确构建爆炸的战争输出。这会影响 Tomcat 日志记录,因为我们需要排除 logback 覆盖我们所有的 log4j 设置。
猜你喜欢
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-26
相关资源
最近更新 更多