首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用rvm jruby时出现Java绑定异常

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

Stack Overflow用户
提问于 2015-08-11 03:20:17
回答 1查看 254关注 0票数 2

我真的被这个错误搞糊涂了。我不确定进程使用的是Java。做kill -9 <pid>也没什么用。我尝试过重新安装jruby。我被难住了。

代码语言:javascript
复制
[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

在终止与java和jruby相关的进程后,我也经常收到这个错误。

代码语言:javascript
复制
error: ng executable not found; run 'make' in /Users/jess/.rvm/rubies/jruby-9.0.0.0/tool/nailgun

更新

我需要更改这个文件吗?如果需要,如何更改?

代码语言:javascript
复制
[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
EN

回答 1

Stack Overflow用户

发布于 2015-08-11 19:50:34

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

在您的情况下,您似乎是在启用Nailgun的情况下启动JRuby。钉枪是一个围绕Java的Ruby包装器,它加速了Java JVM的启动--另请参阅https://github.com/jruby/jruby/wiki/Improving-startup-time。Nailgun启动一个服务器,该服务器默认在端口2113上进行侦听。我猜这就是问题所在。也许另一个进程正在使用这个端口?

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31927455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档