0

我有一个用 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并确保我有 ojdbc6.jar 和 ojdbc7.jar 在$JRUBY_HOME/lib. 当我通过扭矩箱启动应用程序时,我收到如下错误:

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 中的原始错误。我编辑了这篇文章以反映当前情况。)

4

2 回答 2

0

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

于 2014-10-24T23:48:27.240 回答
0

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

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

于 2014-10-27T17:45:27.263 回答