【问题标题】:Torquebox will not load with OracleTorquebox 不会加载 Oracle
【发布时间】:2014-10-23 18:57:17
【问题描述】:

我有一个用 JRuby (1.7.12) 编写的 Rails 3.2.13 应用程序。我正在 Mac OS X 10.10 上开发(尽管问题在 10.9 上也很明显)。我安装了 JDK 1.6 和 1.7。我正在通过扭矩箱 3.1.1 为应用程序提供服务。

如果我启动应用程序连接到我的本地 postgres 数据库,我没有问题。但是我需要调试一个需要连接到 Oracle 的问题。然后我将适配器切换到oracle-enhanced,并确保$JRUBY_HOME/lib 中有ojdbc6.jar 和ojdbc7.jar。当我通过扭矩箱启动应用程序时,出现如下错误:

14:47:58,242 ERROR [org.torquebox.core.runtime] (pool-8-thread-1) Error during execution: ENV['RAILS_ROOT']=RACK_ROOT
ENV['RAILS_ENV']=RACK_ENV
require %q(org/torquebox/web/rails/boot)
: org.jruby.exceptions.RaiseException: (NoMethodError) undefined method `blame_file!' forjava.lang.StackOverflowError:Java::JavaLang::StackOverflowError

我意识到blame_file! 错误是另一回事。我关心的是导致该错误的 StackOverflowError 。当尝试加载必要的文件时,它进入了一个失败的循环,例如 rails/boot 在这种情况下。

但是!当我运行“rails 控制台”时,它工作正常,我可以从数据库中加载数据。

由于能够加载控制台,我确信这是扭矩箱的问题,但我不知道是什么问题,也不知道如何解决。

任何人都可以给我任何帮助吗?有没有人见过这样的东西?谢谢。

(编辑,我在应用程序中找到了 ojdbc7.jar 的本地缓存副本,这解释了我在 1.6 中的原始错误。我已编辑此帖子以反映当前情况。)

【问题讨论】:

    标签: java ruby-on-rails oracle jruby torquebox


    【解决方案1】:

    尝试查看https://github.com/jruby/jruby/issues/976 以解决blame_file 问题,然后希望您会收到更有用的错误消息。 也许那时你会得到一些能够诊断出类似的东西: Error while loading java Class in Jruby application

    【讨论】:

    • 但是当我这样做时,我得到了相同的错误。上面可以看到,报错其实是因为无法加载org/torquebox/web/rails/boot。在我将 activesupport 更改为处理blame_file! 之后,我仍然看到了这一点。 08:39:25,807 ERROR [org.torquebox.core.runtime] (pool-8-thread-1) Failed to initialize runtime: : org.jruby.exceptions.RaiseException: (LoadError) load error: org/torquebox/web/rails/boot -- java.lang.NullPointerException: null
    【解决方案2】:

    我在 irc.freenode.net/#torquebox 上得到了一些帮助。在对堆栈输出与我的堆栈大小有些混淆之后,建议我将其缩小一些。我将它从 4096m(是的,我现在意识到这很荒谬)设置为 2048k,它可以工作。

    我们不知道为什么 Java 会以这种特定的方式出现问题,但最终结果是堆栈大小更小,现在可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-13
      • 2017-05-07
      • 1970-01-01
      相关资源
      最近更新 更多