当前位置: 首页 > 知识库问答 >
问题:

java.net网站。BindException:无法在Heroku上分配请求的地址

俞新翰
2023-03-14

部署到Heroku后,Spark服务器崩溃,并出现以下异常。我的Procfile如下所示:

web: java $JAVA_OPTS -Dserver=$PORT -jar target/myappname-0.0.1-SNAPSHOT.jar

据我所知,Heroku每次部署应用程序时都会分配一个新的端口。但是,我从 Heroku 设置的环境变量中获取 PORT 值,那么为什么我无法获得此请求的地址?

编辑:这些是我将Procfile更正为-Dserver.port=$PORT后的错误日志。

2015-11-21T16:45:02.832568+00:00 app[web.1]: Picked up JAVA_TOOL_OPTIONS: -Xmx384m -Xss512k -Dfile.encoding=UTF-8
2015-11-21T16:45:04.061714+00:00 app[web.1]: [Thread-1] ERROR spark.webserver.JettySparkServer - ignite failed
2015-11-21T16:45:03.918669+00:00 app[web.1]: [Thread-1] INFO org.eclipse.jetty.util.log - Logging initialized @1084ms
2015-11-21T16:45:03.989340+00:00 app[web.1]: [Thread-1] INFO spark.webserver.JettySparkServer - == Spark has ignited ...
2015-11-21T16:45:03.989452+00:00 app[web.1]: [Thread-1] INFO spark.webserver.JettySparkServer - >> Listening on myappname.herokuapp.com:27925
2015-11-21T16:45:03.998409+00:00 app[web.1]: [Thread-1] INFO org.eclipse.jetty.server.Server - jetty-9.3.z-SNAPSHOT
2015-11-21T16:45:04.062462+00:00 app[web.1]: java.net.BindException: Cannot assign requested address
2015-11-21T16:45:04.062702+00:00 app[web.1]:    at sun.nio.ch.Net.bind0(Native Method)
2015-11-21T16:45:04.065229+00:00 app[web.1]:    at sun.nio.ch.Net.bind(Net.java:433)
2015-11-21T16:45:04.065305+00:00 app[web.1]:    at sun.nio.ch.Net.bind(Net.java:425)
2015-11-21T16:45:04.065472+00:00 app[web.1]:    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
2015-11-21T16:45:04.065412+00:00 app[web.1]:    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
2015-11-21T16:45:04.065575+00:00 app[web.1]:    at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:326)
2015-11-21T16:45:04.065628+00:00 app[web.1]:    at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
2015-11-21T16:45:04.065688+00:00 app[web.1]:    at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:244)
2015-11-21T16:45:04.065758+00:00 app[web.1]:    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
2015-11-21T16:45:04.067368+00:00 app[web.1]:    at org.eclipse.jetty.server.Server.doStart(Server.java:384)
2015-11-21T16:45:04.067370+00:00 app[web.1]:    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
2015-11-21T16:45:04.067370+00:00 app[web.1]:    at spark.webserver.JettySparkServer.ignite(JettySparkServer.java:131)
2015-11-21T16:45:04.067371+00:00 app[web.1]:    at spark.SparkInstance.lambda$init$0(SparkInstance.java:341)
2015-11-21T16:45:04.067372+00:00 app[web.1]:    at java.lang.Thread.run(Thread.java:745)
2015-11-21T16:45:05.052415+00:00 heroku[web.1]: State changed from starting to crashed
2015-11-21T16:45:05.036728+00:00 heroku[web.1]: Process exited with status 100

这是在添加 --端口$PORT后发生的。基本上,我看到错误没有变化。

2015-11-21T17:51:14.666062+00:00 app[web.1]: [Thread-0] INFO org.eclipse.jetty.util.log - Logging initialized @230ms
2015-11-21T17:51:14.779260+00:00 app[web.1]: java.net.BindException: Cannot assign requested address
2015-11-21T17:51:14.779449+00:00 app[web.1]:    at sun.nio.ch.Net.bind0(Native Method)
2015-11-21T17:51:14.721317+00:00 app[web.1]: [Thread-0] INFO spark.webserver.JettySparkServer - == Spark has ignited ...
2015-11-21T17:51:14.779526+00:00 app[web.1]:    at sun.nio.ch.Net.bind(Net.java:433)
2015-11-21T17:51:14.779573+00:00 app[web.1]:    at sun.nio.ch.Net.bind(Net.java:425)
2015-11-21T17:51:14.721319+00:00 app[web.1]: [Thread-0] INFO spark.webserver.JettySparkServer - >> Listening on myappname.herokuapp.com:29822
2015-11-21T17:51:14.779601+00:00 app[web.1]:    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
2015-11-21T17:51:14.779661+00:00 app[web.1]:    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
2015-11-21T17:51:14.721320+00:00 app[web.1]: [Thread-0] INFO org.eclipse.jetty.server.Server - jetty-9.3.z-SNAPSHOT
2015-11-21T17:51:14.779796+00:00 app[web.1]:    at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
2015-11-21T17:51:14.779732+00:00 app[web.1]:    at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:326)
2015-11-21T17:51:14.778639+00:00 app[web.1]: [Thread-0] ERROR spark.webserver.JettySparkServer - ignite failed
2015-11-21T17:51:14.779884+00:00 app[web.1]:    at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:244)
2015-11-21T17:51:14.779949+00:00 app[web.1]:    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
2015-11-21T17:51:14.779980+00:00 app[web.1]:    at org.eclipse.jetty.server.Server.doStart(Server.java:384)
2015-11-21T17:51:14.780034+00:00 app[web.1]:    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
2015-11-21T17:51:14.780071+00:00 app[web.1]:    at spark.webserver.JettySparkServer.ignite(JettySparkServer.java:131)
2015-11-21T17:51:14.780110+00:00 app[web.1]:    at spark.SparkInstance.lambda$init$0(SparkInstance.java:341)
2015-11-21T17:51:14.780153+00:00 app[web.1]:    at java.lang.Thread.run(Thread.java:745)
2015-11-21T17:51:15.393560+00:00 heroku[web.1]: Process exited with status 100
2015-11-21T17:51:15.399506+00:00 heroku[web.1]: State changed from starting to crashed

共有2个答案

朱通
2023-03-14

使用-Dserver。Procfile中的port=$port,而不是-Dserver=$port,然后部署应用程序。如果错误仍然存在,请在日志中发布您得到的确切错误。

蔚丰
2023-03-14

我发现问题是我在主要方法中设置了域的IP地址。似乎我们不应该设置这个,而只是通过从环境变量中获取PORT来设置PORT$PORT。

 类似资料:
  • 我得到了异常java.net。BindException:无法分配请求的地址,如果发生此异常,我会尝试使用相同的端口和主机再次绑定它。但在尝试绑定之后,我得到了java.io。IOException:打开的文件太多。 堆栈跟踪: 在一些失败之后: 当java.net时,FD是否可能保持打开状态。BindException:无法分配请求的地址?

  • 问题内容: 我想在我的应用程序中使用低端口(Spring Web上的SNMP陷阱接收器+ Tomcat7)。正如我之前在此线程将低端口绑定到Ubuntu Server上的Java程序中所告诉的那样,我收到了错误权限被拒绝。然后,我将tomcat7用户组更改为root。但是之后,我得到了java.net.BindException:无法分配请求的地址错误。对于我尝试的每个端口(低端口或高端口),我总

  • 我想在我的应用程序中使用低端口(SpringwebTomcat7上的SNMP陷阱接收器)。正如我之前在Ubuntu服务器上的这个线程Binding Low Port to Java Program中所说的,我得到了一个错误Permission denied。然后我将tomcat7用户组更改为root。但在那之后,我得到了java.net。BindException:无法分配请求的地址错误。对于我尝

  • 问题内容: 当我尝试设置套接字服务器时,出现错误消息: 整个代码是最简单的: 我100%确定端口已转发,Windows防火墙已关闭。什么都不会阻塞端口9999。还有什么会出错? 问题答案: 正如其他人指出的那样,这很可能与使用port的另一个进程有关。在Windows上,运行以下命令: 并且它应该列出任何阻塞端口的内容。当然,您必须去手动在Task Manager中杀死那些程序。如果仍然无法解决问

  • 我想发送和接收数据报套接字,但遇到了异常。我传递了要通信的服务器的正确IP地址和正确的端口号。 请帮帮我。

  • 我正在使用 GNetLib 在我的计算机上测试我的服务器。每当我使用我的网络的IP时,它都不会让我绑定。 我的主机是“76 . 5 . 43 . 21”//没有张贴我的实际IP,但你得到了要点。端口是43594,我已经用canyouseeme.org测试了连接,它显示成功。 以下是完整的错误: 问题是我使用家庭网络的IP,还是库限制了我可以使用的IP?