【问题标题】:Grails application won't run in Amazon EC2 but runs fine in windowsGrails 应用程序无法在 Amazon EC2 中运行,但在 Windows 中运行良好
【发布时间】:2014-05-29 12:47:33
【问题描述】:

我有一个 grails 应用程序,它可以在 Windows 中完美运行,并且在作为 WAR 文件部署到 Amazon 弹性 beanstalk 中时也可以正常运行。但它不会在亚马逊 EC2 机器上运行。为什么会这样?这是我尝试运行它时得到的输出:

| Compiling 134 source files.
| Error Compilation error: startup failed:
Compile error during compilation with javac.
/home/ec2-user/FatcaOne_0/target/work/plugins/scaffolding-2.0.3/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldingViewResolver.java:42: error: no interface expected here
public class ScaffoldingViewResolver extends GrailsViewResolver {
                                             ^
/home/ec2-user/FatcaOne_0/target/work/plugins/cache-1.1.2/src/java/grails/plugin/cache/web/

PageInfo.java:37: error: package net.sf.cglib.proxy does not exist
import net.sf.cglib.proxy.Callback;
                         ^
/home/ec2-user/FatcaOne_0/target/work/plugins/scaffolding-2.0.3/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldedGroovyPageView.java:87: error: method createResponseWriter in class GroovyPageView cannot be applied to given types;
                        out = createResponseWriter(response);
                              ^
  required: GrailsWebRequest,HttpServletResponse
  found: HttpServletResponse
  reason: actual and formal argument lists differ in length
/home/ec2-user/FatcaOne_0/target/work/plugins/scaffolding-2.0.3/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldedGroovyPageView.java:75: error: method does not override or implement a method from a supertype
        @Override
        ^
/home/ec2-user/FatcaOne_0/target/work/plugins/scaffolding-2.0.3/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldingViewResolver.java:88: error: cannot find symbol
                return super.createFallbackView(viewName);
                       ^
  symbol:   variable super
  location: class ScaffoldingViewResolver
/home/ec2-user/FatcaOne_0/target/work/plugins/scaffolding-2.0.3/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldingViewResolver.java:58: error: method does not override or implement a method from a supertype
        @Override
        ^
/home/ec2-user/FatcaOne_0/target/work/plugins/scaffolding-2.0.3/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldingViewResolver.java:97: error: cannot find symbol
                view.setApplicationContext(getApplicationContext());
                                           ^
  symbol:   method getApplicationContext()
  location: class ScaffoldingViewResolver
/home/ec2-user/FatcaOne_0/target/work/plugins/scaffolding-2.0.3/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldingViewResolver.java:98: error: cannot find symbol
                view.setServletContext(getServletContext());
                                       ^
  symbol:   method getServletContext()
  location: class ScaffoldingViewResolver
/home/ec2-user/FatcaOne_0/target/work/plugins/scaffolding-2.0.3/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldingViewResolver.java:99: error: cannot find symbol
                view.setTemplateEngine(templateEngine);
                                       ^
  symbol:   variable templateEngine
  location: class ScaffoldingViewResolver
/home/ec2-user/FatcaOne_0/target/work/plugins/cache-1.1.2/src/java/grails/plugin/cache/web/PageInfo.java:418: error: cannot find symbol
                        if (value instanceof Callback || value instanceof Callback[]) {
                                             ^
  symbol:   class Callback
  location: class PageInfo
/home/ec2-user/FatcaOne_0/target/work/plugins/cache-1.1.2/src/java/grails/plugin/cache/web/PageInfo.java:418: error: cannot find symbol
                        if (value instanceof Callback || value instanceof Callback[]) {
                                                                          ^
  symbol:   class Callback
  location: class PageInfo
11 errors


1 error

【问题讨论】:

  • 您没有提供足够的信息来获得完整的答案。看起来您正在您的 EC2 实例上进行编译,您为什么要这样做?您可能没有在 EC2 上设置所有库和环境变量,所以它被炸毁了。为什么不在本地编译并在 EC2 实例上部署 WAR?

标签: grails amazon-web-services amazon-ec2


【解决方案1】:

grails-set-version 对我来说似乎工作正常。

我认为您没有按照升级说明进行操作:

http://grails.org/doc/2.4.x/guide/upgradingFrom23.html

你需要升级你的脚手架版本(和一堆其他的东西),当然使用你创建项目的版本是可以的,但是如果你想升级到 2.4,你需要遵循这些说明。

【讨论】:

  • 哎呀!在“Grails in Action 2nd ed.”的第一个演示中就有这个:“应用程序需要 grails 版本 [2.3.7],但 GRAILS_HOME 是版本 [2.5.1].. 请注意,最新的 Grails 3 是“grails-3.0.5”,最新的 Grails 2 是“grails-2.5.1”。是时候降级了吗?因为这是一台 Amazon EC2 Linux 机器,没问题:下载旧的 Grails,设置 PATH 和 GRAILS_HOME ...但是我实际上需要JDK7 ...哦,好吧。然后降级到JDK7,直到我知道更多,我猜。
【解决方案2】:

您是否可能使用 grails-set-version 更改了 grails 版本?我发现这在 Ec2 上不起作用。您需要继续使用最初使用的 grails 版本。试试看。

【讨论】:

    【解决方案3】:

    当我将 Grails 应用程序从 2.3.11 移动到 Grails 2.5.6 时,出现以下错误:

    Compilation error: startup failed:
    Compile error during compilation with javac.
    /Users/brippe/Projects/server/server/target/work/plugins/scaffolding-2.0.3/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldingViewResolver.java:42: error: no interface expected here
    public class ScaffoldingViewResolver extends GrailsViewResolver {
                                                 ^
    /Users/brippe/Projects/server/server/target/work/plugins/scaffolding-2.0.3/src/java/org/codehaus/groovy/grails/scaffolding/view/ScaffoldedGroovyPageView.java:75: error: method does not override or implement a method from a supertype
        @Override
    

    为了修复这些错误,我将脚手架插件从 2.0.3 更改为 2.1.2:

    plugins {
            build: ..
            compile ":scaffolding:2.1.2" 
    }
    

    更改到 2.1.2 版本后,错误消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 2019-11-08
      相关资源
      最近更新 更多