首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Heroku上用Proximo修复java.net.BindException?

如何在Heroku上用Proximo修复java.net.BindException?
EN

Stack Overflow用户
提问于 2012-12-17 16:48:59
回答 3查看 609关注 0票数 5

我已经在Heroku上安装了Proximo附加组件,当将该命令添加到我现有的命令之前时,我从Java获得了一个BindException。这是我的前缀命令的样子:web: bin/proximo sh target/bin/webapp,一旦我删除了Proximo部分(bin/proximo),应用程序就启动了,没有任何错误。

这是完整的堆栈跟踪。我遗漏了什么?

代码语言:javascript
复制
Exception in thread "main" java.net.BindException: Cannot assign requested address
 at sun.nio.ch.Net.bind0(Native Method)
 at sun.nio.ch.Net.bind(Net.java:344)
 at sun.nio.ch.Net.bind(Net.java:336)
 at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:199)
 at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
 at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:162)
 at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:297)
 at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:240)
 at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
 at org.eclipse.jetty.server.Server.doStart(Server.java:270)
 at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
EN

回答 3

Stack Overflow用户

发布于 2012-12-21 01:42:20

请记住,您只能使用Heroku在$PORT变量中提供的端口。

因此:

代码语言:javascript
复制
web: bin/proximo [your existing command]

需要包括以下内容,例如:

代码语言:javascript
复制
web: bin/proximo [your existing command] -p $PORT

或者任何你需要用来指定你的web进程运行的端口的东西。

票数 1
EN

Stack Overflow用户

发布于 2012-12-17 16:53:51

它与使用端口9999的另一个进程相关。在Windows上,运行以下命令:

代码语言:javascript
复制
netstat -a -n | find "LIST"

它应该列出所有占用港口的东西。当然,您必须在任务管理器中手动删除这些程序。如果这仍然不起作用,请替换该行:

代码语言:javascript
复制
serverSocket = new ServerSocket(9999);

通过以下方式:

代码语言:javascript
复制
InetAddress locIP = InetAddress.getByName("192.168.1.20");
serverSocket = new ServerSocket(9999, 0, locIP);

将127.0.0.1与您的实际IP地址一起使用。

票数 0
EN

Stack Overflow用户

发布于 2015-03-06 23:29:22

proximo包装器不适用于Java。除了使用包装器,您还需要在应用程序的初始化中添加一些自定义代码。

代码语言:javascript
复制
URL proximo = new URL(System.getenv("PROXIMO_URL"));
String userInfo = proximo.getUserInfo();
String user = userInfo.substring(0, userInfo.indexOf(':'));
String password = userInfo.substring(userInfo.indexOf(':') + 1);

System.setProperty("socksProxyHost", proximo.getHost());
Authenticator.setDefault(new ProxyAuthenticator(user, password));

代码语言:javascript
复制
private class ProxyAuthenticator extends Authenticator {
  private final PasswordAuthentication passwordAuthentication;

  private ProxyAuthenticator(String user, String password) {
    passwordAuthentication = new PasswordAuthentication(user, password.toCharArray());
  }

  @Override
  protected PasswordAuthentication getPasswordAuthentication() {
    return passwordAuthentication;
  }
}

该解决方案在this article中有完整的描述。

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

https://stackoverflow.com/questions/13910888

复制
相关文章

相似问题

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