Torquebox不会加载Oracle

时间:2014-10-23 18:57:17

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

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

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

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 console”时,它运行正常,我可以从数据库加载数据。

我确信由于能够加载控制台,这在某种程度上是扭矩盒的问题,但我不知道是什么,也不知道如何解决它。

有没有人可以帮助我?以前有人见过这样的东西吗?感谢。

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

我们不知道为什么Java会以这种特定的方式结束,但最终的结果是,如果堆栈大小较小,它现在可以正常工作。