【问题标题】:java.lang.ClassCastException in Grails appGrails 应用程序中的 java.lang.ClassCastException
【发布时间】:2013-03-10 04:19:04
【问题描述】:

我正在关注免费的在线书籍“Grails 入门”(http://www.infoq.com/minibooks/grails-getting-started),并且在尝试列出任何域类时遇到 java.lang.ClassCastException。谁能破译这个?

URI: /RaceTrack/runner/list
Class: java.lang.ClassCastException
Message: sun.proxy.$Proxy26 cannot be cast to org.springframework.orm.hibernate3.HibernateCallback

堆栈跟踪:

    Line | Method
->>   15 | list      in RunnerController.groovy
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    186 | doFilter  in PageFragmentCachingFilter.java
|     63 | doFilter  in AbstractFilter.java
|   1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^    722 | run       in java.lang.Thread

附加信息(PageFragmentCachingFilter.java 的第 186 行附近)

183:            if(method == null) {
184:                log.debug("No cacheable method found for {}:{} {}",
185:                        new Object[] { request.getMethod(), request.getRequestURI(), getContext() });
186:                chain.doFilter(request, response);
187:                return;
188:            }
189:            Collection<CacheOperation> cacheOperations = cacheOperationSource.getCacheOperations(

附加信息(大约在 AbstractFilter.java 的第 63 行):

60:     try {
61:         // NO_FILTER set for RequestDispatcher forwards to avoid double gzipping
62:         if (filterNotDisabled(request)) {
63:             doFilter(request, response, chain);
64:         }
65:         else {
66:             chain.doFilter(req, res);

【问题讨论】:

  • 能否请您包含来自 RunnerController 的代码。鉴于它是您应该开始查找的堆栈跟踪的顶部。
  • 试试 grails clean 的威力 :)
  • 我从idea运行时注意到了这个问题,但不是从命令行(grails run-app)运行。也许这与环境有关?我们的生产版本使用的是远程数据库,而开发版本使用的是 hsqldb。
  • 从IDEA运行时也有问题,但不是命令行。清除 .slcache 没有帮助,所以必须与 IDEA 相关。

标签: exception grails groovy classcastexception


【解决方案1】:

几天前我突然遇到了同样的问题。删除 ~/.grails/2.0.4/.slcache/ 目录为我修复了它。

【讨论】:

  • 快捷方式 - 删除整个 .grails 文件夹。
  • 谢谢!顺便说一句,在我的环境中,它是 ~/.grails/.slcache/.
【解决方案2】:

删除 .grails 子目录顶部的 .slcache 以及 .slcache(如果存在),以用于正在使用的特定版本的 grails。例如,~/.grails/2.1.3/.slcache。

这在使用 IntelliJ IDEA 启动应用程序时有效。

【讨论】:

    【解决方案3】:

    应用是否在禁用重新加载 (spring-loaded agent) 的情况下启动?

    grails -noreloading run-app
    

    Grails Jira 已向GRAILS-9952 报告了一个类似问题。如果您可以提供重现问题的测试应用程序,这将有助于解决问题。请将其附加到 jira 问题中。

    【讨论】:

      猜你喜欢
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      相关资源
      最近更新 更多