尝试使用rvm jruby时出现Java绑定异常

尝试使用rvm jruby时出现Java绑定异常,java,rvm,jruby,Java,Rvm,Jruby,我真的被这个错误弄糊涂了。我不确定使用Java的过程是什么。执行kill-9也无济于事。我已尝试重新安装jruby。我被难住了 [phoenix (master)]$ rvm use jruby Using /Users/jess/.rvm/gems/jruby-9.0.0.0 [phoenix (master)]$ java.net.BindException: Address already in use at java.net.PlainSocketImpl.socketBind(

我真的被这个错误弄糊涂了。我不确定使用Java的过程是什么。执行
kill-9也无济于事。我已尝试重新安装jruby。我被难住了

[phoenix (master)]$ rvm use jruby
Using /Users/jess/.rvm/gems/jruby-9.0.0.0
[phoenix (master)]$ java.net.BindException: Address already in use
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:382)
    at java.net.ServerSocket.bind(ServerSocket.java:375)
    at java.net.ServerSocket.<init>(ServerSocket.java:237)
    at java.net.ServerSocket.<init>(ServerSocket.java:128)
    at com.martiansoftware.nailgun.NGServer.run(NGServer.java:411)
    at java.lang.Thread.run(Thread.java:745)

[phoenix (master)]$ ps aux | grep java
jess             1197   0.0  0.4  4391504  29456 s000  S     2:01PM   0:00.95 /usr/bin/java -Xmx500m -Xss2048k -Djffi.boot.library.path=/Users/jess/.rvm/rubies/jruby-9.0.0.0/lib/jni -Dfile.encoding=UTF-8 -classpath /Users/jess/.rvm/rubies/jruby-9.0.0.0/lib/jruby.jar:/Users/jess/.rvm/rubies/jruby-9.0.0.0/lib/jruby-truffle.jar:/Users/jess/.rvm/rubies/jruby-9.0.0.0/lib/jruby-truffle.jar: -Djruby.home=/Users/jess/.rvm/rubies/jruby-9.0.0.0 -Djruby.lib=/Users/jess/.rvm/rubies/jruby-9.0.0.0/lib -Djruby.script=jruby -Djruby.shell=/bin/sh org.jruby.main.NailServerMain
jess             5365   0.0  0.0  2432772    648 s000  S+    2:15PM   0:00.00 grep java
更新

我是否需要更改此文件;如果是,怎么做

[phoenix (master)]$ cat ~/.rvm/hooks/after_use_jruby
#!/usr/bin/env bash

\. "${rvm_path}/scripts/functions/hooks/jruby"

if [[ "${rvm_ruby_string}" =~ "jruby" ]]
then
  jruby_ngserver_start
  jruby_options_append "--ng" "${PROJECT_JRUBY_OPTS[@]}"
else
  jruby_options_remove "--ng" "${PROJECT_JRUBY_OPTS[@]}"
  jruby_clean_project_options
fi

首先,JRuby当然使用Java,因为它是Ruby的Ruby实现

在您的情况下,您似乎是在启用JRuby。Nailgun是一个围绕Java的Ruby包装器,它加快了Java JVM的启动速度—另请参阅。Nailgun启动一个服务器,该服务器根据端口2113上的默认值进行侦听。我猜这就是问题所在。也许另一个进程正在使用这个端口


RVM使用jruby
之后,RVM实际上会尝试自动启动Nailgun服务器。请参阅
~/.rvm/hooks/after\u use\u jruby
。您可以删除或更改此脚本以避免使用钉枪。

[phoenix(master)]$lsof-i:2113命令PID用户FD类型设备大小/非节点名称java 9439 jess 17u IPv6 0x99bbb8b0eec4fe77 0t0 TCP*:hsl storm(侦听)
在使用jruby
文件后,他们有相同的PIDI注释了
,并终止了java进程,同样的行为仍然存在。非常感谢你的帮助。
[phoenix (master)]$ cat ~/.rvm/hooks/after_use_jruby
#!/usr/bin/env bash

\. "${rvm_path}/scripts/functions/hooks/jruby"

if [[ "${rvm_ruby_string}" =~ "jruby" ]]
then
  jruby_ngserver_start
  jruby_options_append "--ng" "${PROJECT_JRUBY_OPTS[@]}"
else
  jruby_options_remove "--ng" "${PROJECT_JRUBY_OPTS[@]}"
  jruby_clean_project_options
fi