【问题标题】:Play2 IntelliJ leads to akka.stream.BindFailedException$: bind failed on LinuxPlay2 IntelliJ 导致 akka.stream.BindFailedException$: 在 Linux 上绑定失败
【发布时间】:2017-11-05 00:45:57
【问题描述】:

当我尝试通过 intellij 的 play2 插件运行我的(本地)播放应用程序时,我得到:

[ERROR] [06/03/2017 23:21:10.985] [play-dev-mode-akka.actor.default-dispatcher-2] [akka://play-dev-mode/system/IO-TCP/selectors/$a/0] Bind failed for TCP channel on endpoint [/0.0.0.0:80]
java.net.SocketException: Permission denied
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:433)
    at sun.nio.ch.Net.bind(Net.java:425)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
    at akka.io.TcpListener.liftedTree1$1(TcpListener.scala:56)
    at akka.io.TcpListener.<init>(TcpListener.scala:53)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at akka.util.Reflect$.instantiate(Reflect.scala:65)
    at akka.actor.ArgsReflectConstructor.produce(IndirectActorProducer.scala:96)
    at akka.actor.Props.newActor(Props.scala:213)
    at akka.actor.ActorCell.newActor(ActorCell.scala:555)
    at akka.actor.ActorCell.create(ActorCell.scala:581)
    at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:454)
    at akka.actor.ActorCell.systemInvoke(ActorCell.scala:476)
    at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:282)
    at akka.dispatch.Mailbox.run(Mailbox.scala:223)
    at akka.dispatch.Mailbox.exec(Mailbox.scala:234)
    at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

akka.stream.BindFailedException$: bind failed

但是,如果我通过 sbt run 运行它,一切都会像魅力一样运行。

1) 为什么会这样? 2)我该如何解决这个问题? (在这里在 Linux 4.11 上运行 - 我知道该端口只允许“sudoers”,但后来我想知道为什么 sbt-way 有效) 3)在“调试模式”下运行播放的任何其他方式?我想设置一些断点并分析流程。

【问题讨论】:

    标签: linux intellij-idea playframework sbt


    【解决方案1】:

    我之前遇到过类似的问题。部署到端口需要权限,如果您想在本地运行服务,您可以将端口更改为 9000,如果您不希望出现此问题。然后,当您在生产环境中部署时,您可以将其更改为 80 并遵循以下指南:

    https://www.playframework.com/documentation/2.5.x/Deploying

    【讨论】:

    • 但我不想“部署”,因为它已准备好生产。我想要和sbt run 一样
    • 是的,我知道,我只是为您提供一个替代方案。您可以有两种不同的配置,一种用于本地端口 9000,另一种用于生产端口 80,这就是我的意思。顺便说一句,这是一个完整的主题。您也可以将端口 8080 用于本地:stackoverflow.com/questions/8205067/…
    • 我的sbt run 已经部署在端口 9000 上。只是 play2 插件没有但出于某种未知原因尝试端口 80。对不起,我无法关注你。
    • 我明白了,很抱歉我误会了。
    【解决方案2】:

    如果您已将 build.sbt 更改为侦听端口 80,请删除该行。 IntelliJ 仍然认为应用希望在 80 上运行

    还有:

    如果您更改了 application.conf,请确保端口未设置为 80。

    【讨论】:

      猜你喜欢
      • 2015-11-30
      • 1970-01-01
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多