Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jruby中奇怪的语法错误不一致_Ruby_Rvm_Jruby - Fatal编程技术网

Jruby中奇怪的语法错误不一致

Jruby中奇怪的语法错误不一致,ruby,rvm,jruby,Ruby,Rvm,Jruby,我在OSX上运行的Jruby和Ubuntu生产主机之间遇到了不一致。在我的生产主机上,我有以下功能: ~ $ java -version java version "1.6.0_22" Java(TM) SE Runtime Environment (build 1.6.0_22-b04) Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode) ~ $ rvm use jruby-1.6.8 Using /home/ubunt

我在OSX上运行的Jruby和Ubuntu生产主机之间遇到了不一致。在我的生产主机上,我有以下功能:

~ $ java -version
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)
~ $ rvm use jruby-1.6.8
Using /home/ubuntu/.rvm/gems/jruby-1.6.8
~ $ rvm list rubies

rvm rubies

=> jruby-1.6.8 [ x86_64 ]
 * ruby-1.9.2-p318 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

~ $ irb
jruby-1.6.8 :001 > def foo(*args)
jruby-1.6.8 :002?>   end
 => nil 
jruby-1.6.8 :003 > foo(1,
jruby-1.6.8 :004 >         2,
jruby-1.6.8 :005 >         )
SyntaxError: (irb):5: syntax error, unexpected tRPAREN

    )
    ^
    from org/jruby/RubyKernel.java:1112:in `eval'
    from /home/ubuntu/.rvm/rubies/jruby-1.6.8/lib/ruby/1.8/irb.rb:158:in `eval_input'
    from /home/ubuntu/.rvm/rubies/jruby-1.6.8/lib/ruby/1.8/irb.rb:271:in `signal_status'
    from /home/ubuntu/.rvm/rubies/jruby-1.6.8/lib/ruby/1.8/irb.rb:155:in `eval_input'
    from org/jruby/RubyKernel.java:1439:in `loop'
    from org/jruby/RubyKernel.java:1212:in `catch'
    from /home/ubuntu/.rvm/rubies/jruby-1.6.8/lib/ruby/1.8/irb.rb:154:in `eval_input'
    from /home/ubuntu/.rvm/rubies/jruby-1.6.8/lib/ruby/1.8/irb.rb:71:in `start'
    from org/jruby/RubyKernel.java:1212:in `catch'
    from /home/ubuntu/.rvm/rubies/jruby-1.6.8/lib/ruby/1.8/irb.rb:70:in `start'
    from /home/ubuntu/.rvm/rubies/jruby-1.6.8/bin/irb:17:in `(root)'
这是(我相信)有效的Ruby代码,但更重要的是,它似乎是有效的jruby代码,因为它在我的OS X设备上运行良好:

~ $ java -version
java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)
~ $ rvm use jruby-1.6.8
Using /Users/lwiman/.rvm/gems/jruby-1.6.8
~ $ rvm list rubies

rvm rubies

   jruby-1.6.4 [ x86_64 ]
   jruby-1.6.7 [ x86_64 ]
=> jruby-1.6.8 [ x86_64 ]
 * ruby-1.9.2-p290 [ x86_64 ]
   ruby-1.9.3-p194 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

~ $ irb
jruby-1.6.8 :001 > def foo(*args)
jruby-1.6.8 :002?>   end
 => nil 
jruby-1.6.8 :003 > foo(1,
jruby-1.6.8 :004 >         2,
jruby-1.6.8 :005 >         )
 => nil 
jruby-1.6.8 :006 > 

如果您能帮助解决此问题,我们将不胜感激

解决了!(昨天做了几个小时,在把它放在StackOverflow上20分钟后解决它。问题是Jruby出于某种原因默认为Ruby 1.8模式。我不完全确定为什么它在我的OS X计算机上工作,但在我的
文件中添加了
compat.version=1.9
。jrubyrc
文件起了作用。请参阅:

Jruby bellow 1.7.0是by默认在1.8模式下,从1.7.0开始的Jruby默认在1.9模式下。默认在1.9模式下安装Jruby:
rvm install Jruby-C-Djruby.default.ruby.version=1.9
rm有一个快捷方式,适用于Jruby和rbx:
rvm install Jruby--1.9