【问题标题】:Grails, Can not run WAR-fileGrails,无法运行 WAR 文件
【发布时间】:2018-09-10 04:41:42
【问题描述】:

当我尝试运行我的 WAR 文件时,我会得到这个:

$ java -Dgrails.env=prod -jar build/libs/MyWar-0.45.war
Error: Could not find or load main class  build.libs.MyWar-0.45.war

有这些版本:

grailsVersion=3.3.3
gormVersion=6.1.6.RELEASE
gradleWrapperVersion=3.5
jdk1.8.0_161

它适用于 grails 3.3.0。 有什么想法吗?

【问题讨论】:

  • 尝试 cd build/libs 然后从那里运行 jar,而不是源项目的基础。
  • 通常我的方式,正如我在上面尝试的那样,但现在我在新磁盘上安装了 Windows 并从旧磁盘复制项目并从 grails-3.3.0 升级到 grails -3.3.3也不是你描述的方式。我可能需要更改我的项目中的某些内容,但我不知道是什么。
  • 你试过干净吗?您是否也将缓存和存储库复制到您的主目录?例如.m2 .gradle 和 .grails,并不是说你应该这样做,但项目可能期望有一些东西存在并且没有它可能无法运行,有时最好从头开始并从新机器上的版本控制中检查项目,项目也运行从 or 命令行使用 run-app?
  • 您是否忘记在命令中包含-jar
  • 好吧,我现在可以看到我在我的问题中忘记了它。我不知道我怎么会错过它,因为我在运行它时就拥有它。但是当我在 PowerShell 中运行时它没有帮助。但是在 PS 中运行时从命令行中删除“-Dgrails.env=prod”会有所帮助,但在经典命令窗口中运行时我可以保留完整的命令。

标签: grails war


【解决方案1】:

你可能想要java -Dgrails.env=prod -jar build/libs/MyWar-0.45.war,而不是java -Dgrails.env=prod build/libs/MyWar-0.45.war

【讨论】:

  • 默认情况下,您的 .war 文件将在 prod 模式下构建,因此除非您的构建中有一些不寻常的东西会改变它,否则 -Dgrails.env=prod 将是多余的。
  • 是的,我意识到当我在生产环境中删除选项“-Dgrails.env=prod”使其在 PowerShell 中工作时。
【解决方案2】:

问题似乎在于新版本的 windows10 (1709) 在开始菜单中没有显示命令提示符。相反,有 PowerShell 并且“java -Dgrails.env=prod”在 PS 中不起作用。当我从命令中删除“-Dgrails.env=prod”时它起作用了。 但是当我尝试 RUN-cmd 来获取旧的命令窗口时,完整的命令就起作用了。 所以使用PowerShell的这个命令似乎有些问题。

这解决了我的问题,但如果有人能解释什么是错的或者你如何使它与 PowerShell 一起工作,那将是受欢迎的。

【讨论】:

    【解决方案3】:
    grails "-Dgrails.env=prod" run-app
    

    Powershell 仅在引用时识别 -Dgrails.env=prod 命令。

    我从IntelliJ IDEA 中的PS terminal 和Windows Powershell 成功运行了这个命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      • 1970-01-01
      • 2014-07-03
      • 1970-01-01
      • 1970-01-01
      • 2016-12-02
      相关资源
      最近更新 更多