Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.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
Java 播放框架:重新编译后Netty无法绑定_Java_Scala_Playframework_Akka - Fatal编程技术网

Java 播放框架:重新编译后Netty无法绑定

Java 播放框架:重新编译后Netty无法绑定,java,scala,playframework,akka,Java,Scala,Playframework,Akka,我正在使用Akka和Memcached在Play框架中进行一个项目。当我在IDE中更改java源代码时,play会自动重新编译和重新运行/重新加载。在我们的项目中,有一个代码为Akka寻找一个自由港。4万开始。尝试打开和关闭端口上的套接字。成功后,它将为Akka构建一个配置,包括找到的可用端口。但稍后此初始化失败并引发此异常: Caused by: org.jboss.netty.channel.ChannelException: Failed to bind to: /127.0.0.1:4

我正在使用Akka和Memcached在Play框架中进行一个项目。当我在IDE中更改java源代码时,play会自动重新编译和重新运行/重新加载。在我们的项目中,有一个代码为Akka寻找一个自由港。4万开始。尝试打开和关闭端口上的套接字。成功后,它将为Akka构建一个配置,包括找到的可用端口。但稍后此初始化失败并引发此异常:

 Caused by: org.jboss.netty.channel.ChannelException: Failed to bind to: /127.0.0.1:40000

 at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:272)
 at akka.remote.transport.netty.NettyTransport$$anonfun$listen$1.apply(NettyTransport.scala:377)
 at akka.remote.transport.netty.NettyTransport$$anonfun$listen$1.apply(NettyTransport.scala:374)
 at scala.util.Success$$anonfun$map$1.apply(Try.scala:206)
 at scala.util.Try$.apply(Try.scala:161)
 at scala.util.Success.map(Try.scala:206)
 at scala.concurrent.Future$$anonfun$map$1.apply(Future.scala:235)
 at scala.concurrent.Future$$anonfun$map$1.apply(Future.scala:235)
 at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
 at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.processBatch$1(BatchingExecutor.scala:67)
 at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.apply$mcV$sp(BatchingExecutor.scala:82)
 at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.apply(BatchingExecutor.scala:59)
 at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.apply(BatchingExecutor.scala:59)
 at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:72)
 at akka.dispatch.BatchingExecutor$Batch.run(BatchingExecutor.scala:58)
 at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:42)
 at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386)
 at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
 at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
 at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
 at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

 Caused by: java.net.BindException: Address already in use

 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.jboss.netty.channel.socket.nio.NioServerBoss$RegisterTask.run(NioServerBoss.java:193)
 at org.jboss.netty.channel.socket.nio.AbstractNioSelector.processTaskQueue(AbstractNioSelector.java:366)
 at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:290)
 at org.jboss.netty.channel.socket.nio.NioServerBoss.run(NioServerBoss.java:42)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
 at java.lang.Thread.run(Thread.java:722)

奇怪的是,这段代码可以在Ubuntu上运行,但不能在MacOSX(Maverics)上运行。任何想法都是非常好的。

您希望现有实例通过什么机制释放其端口?请尝试在终端中使用
sudo lsof-i4
,以确定是否有人正在接管有问题的端口。看起来您的旧实例仍在运行,因此它仍保留端口。我不是此项目的架构师。我想深入研究一下,但我没有时间。但可以肯定的是,这在ubuntu上正常工作。它只在OSX上失败。此外,我调试了初始化代码,在AKKA/NETTY启动之前,这个端口是免费的。问题在AKKA或Netty启动期间明显出现。