我有一个用JRuby编写的Rails 3.2.13应用程序(1.7.12)。我正在MacOSX10.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控制台“时,它可以正常工作,并且可以从数据库加载数据。
由于能够加载控制台,我确信这在某种程度上是torquebox的问题,但我不知道什么,也不知道如何修复它。
有人能给我什么帮助吗?以前有人见过这样的东西吗?谢谢。
(编辑,我在应用程序中找到了一个本地缓存的ojdbc7.jar副本,这用1.6解释了我最初的错误。我编辑了这篇文章,以反映当前的情况。)
发布于 2014-10-24 23:48:27
试着看看https://github.com/jruby/jruby/issues/976来解决blame_file问题,然后希望您能得到更有用的错误消息。也许这样你就能诊断出类似于:Error while loading java Class in Jruby application的东西
发布于 2014-10-27 17:45:27
我在irc.freenode.net/#torquebox上得到了一些帮助。在对堆栈输出和我的堆栈大小进行了一些混淆之后,有人建议我将其缩小一些。我把它从4096米(是的,我现在意识到这太荒谬了)设置到2048k,它起作用了。
我们不知道为什么Java会以这种特定的方式出现,但最终的结果是,如果堆栈大小更小,它现在就可以工作了。
https://stackoverflow.com/questions/26535344
复制相似问题