java - 传输 dt_socket 8787 已经在使用中

标签 java maven jetty maven-jetty-plugin

我正在尝试在我的 Ubuntu 12.04 机器上的 Jetty 服务器中运行服务器和客户端应用程序。服务器启动没有任何问题,我使用了以下命令

$ mvn jetty :运行

发出这条命令时,第一行是

Listening for transport dt_socket at address: 8787

但是当我启动客户端时出现以下错误

ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
Aborted

看起来与传输 dt_socket 有关。我不明白它是什么以及如何为客户使用另一个地址?

编辑 1

客户端的 pom.xml 中的 jetty-maven-plugin 看起来像这样

<build>
    <plugins>

      <!-- Specific jetty-maven-plugin configuration for running Jetty during
        development. None of its goals are run in a normal build lifecycle. -->
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>${jetty-maven-plugin.version}</version>
        <configuration>
          <webAppConfig>
            <contextPath>/</contextPath>
            <extraClasspath>${basedir}/src/test/resources/</extraClasspath>
          </webAppConfig>
          <connectors>
            <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
              <port>${servlet.port}</port>
              <host>0.0.0.0</host>
            </connector>
          </connectors>
          <reload>manual</reload>
          <useTestClasspath>true</useTestClasspath>
        </configuration>
      </plugin>
    </plugins>
  </build>

我的假设是一些 Jetty 以 Debug模式启动并尝试在端口 8787 附加调试器,该端口已经绑定(bind)到服务器的调试器。

最佳答案

Jetty 不会自动启动调试器。您很可能已将 MAVEN_OPTS 环境变量设置为包含 -Xdebug 参数。检查'echo $MAVEN_OPTS',你会看到类似的东西:

-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n

您不能运行两个都尝试在端口 8787 上调试的 Maven 进程。因此更改您的全局 MAVEN_OPTS(在 osx 上运行时在 .bash_profile 中)或更改您的第二个终端 session 的 MAVEN_OPTS:

export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=512M"

关于java - 传输 dt_socket 8787 已经在使用中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18663278/

相关文章:

java - 优化 Solr 搜索,获得精确匹配?

gwt - 使用https保护GWT应用程序

java - Java 中使用 SSL 的 HTTP 代理

java - 如何从其他 Controller 调用具有请求 ParameterMap 的方法

创建 JFrame 时 Java 崩溃

java - 运行 mvn checkstyle :checkstyle 时出错

java - Maven/Spring 私有(private)存储库设置

java - 在 OSGi 内托管 HTTPS 服务器

java - 请帮我解决简单的Java程序

Maven 无法在同一个 repo 中传输许多 Artifact 之一