1

我在项目springboot maven和. 我想执行并启动 cassandra docker 和 api 服务器,执行测试然后停止服务器,但我面临错误cassandradockermvn verifypre-integration-testpost-integration-testCould not contact Spring Boot application: Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: error during JRMP connection establishment;

我已经创建了githubrepo,因此您可以轻松地重现错误。

重现步骤

git clone https://github.com/gandra/docker-cassandra-with-initial-seed.git
cd docker-cassandra-with-initial-seed
mvn verify

这将产生如下错误:

[INFO]
[INFO] --- spring-boot-maven-plugin:2.2.2.RELEASE:start (api-server-start) @ docker-cassandra-with-initial-seed ---
[INFO] Attaching agents: []
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  18.501 s
[INFO] Finished at: 2021-01-21T18:39:05+01:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.2.2.RELEASE:start (api-server-start) on project docker-cassandra-with-initial-seed: Could not contact Spring Boot application: Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
[ERROR]     java.io.EOFException]
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

任何想法如何解决。

ps我正在使用mac,这个解决方案也适用于mac和linux。

4

3 回答 3

1

代码https://github.com/gandra/docker-cassandra-with-initial-seed已修复,现在可以使用。

基本上有两件事发生了变化:

  1. 从 docker-cassandra.sh 中删除了端口映射 9001。
  2. 在 cassandra_start 函数中添加sleep 20了几秒钟,docker-cassandra.sh以便让 cassandra 有时间正确启动。不好,但至少工作。

现在followiung代码应该与1个成功执行的集成测试一起工作:

git clone https://github.com/gandra/docker-cassandra-with-initial-seed.git
cd docker-cassandra-with-initial-seed
mvn verify
于 2021-01-22T15:20:33.087 回答
1

如果您使用的是 Windows,那么 2020 年解决的一个问题有点难以找到(如果您想阅读完整的故事,这里是 Github 上的完整线程)。
回顾一下,解决方案是修复jmxPort. 例如:

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <jmxPort>9011</jmxPort>
        </configuration>
    [...]
于 2021-04-28T19:57:53.070 回答
0

这里的问题是他试图使用一个已经在使用的端口。我在 spring boot 上遇到了类似的问题(不是 cassandra)。

我认为解决这个问题的两种方法:

第一种方式:

  1. 找到正在使用该端口的程序(在我的例子中,它是端口 9001 上的“Intel(R) Graphics Command Center”)。(您可以在命令提示符下使用 netstat /a /b)或使用 tcpview(外部免费程序)
  2. 禁用程序
  3. 利润

第二种方式

在 spring-boot-maven-plugin 上的 pom 中配置 jmx 端口(来自 Sixro 的答案)但是,我不喜欢这种方式,因为您基本上强制项目中的其他人使用您的解决方法,而问题出在您的机。

于 2021-05-07T16:03:16.120 回答