Tomcat Cannot assign requested address: JVM_Bind 非端口占用冲突

yizhihongxing

当运行Tomcat时,可能会出现以下错误:

java.net.BindException: Cannot assign requested address: JVM_Bind

这个错误通常意味着Tomcat无法将其绑定到特定的IP地址和端口。以下是可能导致这个错误的几种原因,以及如何解决它们。

原因1: 该端口已被占用

此错误可能是因为要绑定的端口已经被其他进程占用了。您可以通过以下命令检查要绑定的端口是否已被占用:

sudo lsof -i :8080

这会显示所有使用端口8080的进程。如果有一个进程使用了该端口,您需要停止该进程或更改Tomcat使用的端口。

示例1:

$ sudo lsof -i :8080
COMMAND   PID      USER   FD   TYPE            DEVICE SIZE/OFF NODE NAME
Java     1337   tomcat   62u  IPv4 0x3b31216ae2bff57d      0t0  TCP *:http-alt (LISTEN)

表明端口8080被进程Java所占用,那么我们可以使用以下命令杀死该进程。

$ sudo kill -9 1337

示例2:

实际上,这个问题在一台机器上经常发生,因为同一机器上经常会有很多Tomcat实例以及nginx等web服务器实例在同时运行。假设我们当前要启动的tomcat端口为8080,我们可以使用下列命令查看该端口是否被占用:

$ lsof -i:8080

结果如下:

COMMAND   PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    25420   root   76u  IPv6 0xa2d6beca2ca65013      0t0  TCP *:http-alt (LISTEN)

可以看到该端口被java命令占用。可以使用下列命令杀死该进程:

$ sudo kill -9 25420

原因2: IP地址无效或不可访问

如果要绑定的IP地址无效或不可访问,则会出现“Cannot assign requested address: JVM_Bind”的错误消息。请确保Tomcat尝试将其绑定到有效的IP地址。

示例:

$ sudo lsof -i :80
COMMAND    PID    USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nginx    32361   nginx    6u  IPv4 57334369      0t0  TCP *:http (LISTEN)

在这个示例中,可以看到nginx正在监听端口80。因此,Tomcat无法绑定到同一端口。

如果您确定IP地址有效并且尝试更改端口仍然不起作用,则可能存在一些其他问题。在这种情况下,请尝试重新安装Tomcat,或者尝试在其他机器上运行它,以排除任何可能的配置问题。

总之,当出现“Cannot assign requested address: JVM_Bind”的错误时,往往是端口占用或IP地址无效的问题造成的。因此,您需要先确定问题的根本原因,并采取适当的措施解决它。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Tomcat Cannot assign requested address: JVM_Bind 非端口占用冲突 - Python技术站

(1)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 实现高并发秒杀的 7 种方式,写的太好了,建议收藏!!

    1.引言 高并发场景在现场的日常工作中很常见,特别是在互联网公司中,这篇文章就来通过秒杀商品来模拟高并发的场景。文章末尾会附上文章的所有代码、脚本和测试用例。 本文环境: SpringBoot 2.5.7 + MySQL 8.0 X + MybatisPlus + Swagger2.9.2 模拟工具: Jmeter 模拟场景: 减库存->创建订单-&g…

    Java 2023年5月11日
    00
  • uniapp如何编写含有后端的登录注册页面

    uni-app是一个跨平台的前端框架,它可以让我们开发一次代码,然后在多个平台上进行部署。在这里,我们通过uni-app来实现含有后端的登录注册页面。 步骤一:创建uni-app应用 我们需要在本地创建一个uni-app应用,可以通过HBuilder X来创建。我们在控制台中进入到项目目录,然后执行以下命令: $ hbuilderx init 按照提示输入应…

    Java 2023年5月30日
    00
  • JSP开发之Spring方法注入之替换方法实现

    下面我将详细讲解“JSP开发之Spring方法注入之替换方法实现”的完整攻略: 一、准备工作 在开始使用Spring实现方法注入之前,需要先完成如下准备工作: 确认项目中已引入Spring框架,可以在项目的pom.xml文件中添加Spring依赖。 定义接口和实现类,例如: public interface TestService { void sayHel…

    Java 2023年6月15日
    00
  • Struts2拦截器 关于解决登录的问题

    为了解决网站用户登录的安全问题,我们可以使用Struts2拦截器。Struts2拦截器可以拦截用户的请求,并做出相应的处理,比如检查用户是否已经登录,如果没有则跳转至登录页面。以下是Struts2拦截器解决登录问题的完整攻略: 1. 编写拦截器 我们先来编写一个处理用户登录的拦截器。该拦截器会检查用户是否已经登录,如果没有登录,则直接跳转至登录页面。 pub…

    Java 2023年6月15日
    00
  • SpringMVC 数据校验方法(必看篇)

    以下是关于“SpringMVC 数据校验方法(必看篇)”的完整攻略,其中包含两个示例。 SpringMVC 数据校验方法 SpringMVC 数据校验是一种用于验证表单数据的机制。在本文中,我们将讲解SpringMVC 数据校验的实现原理及用法。 数据校验实现原理 SpringMVC 数据校验的实现原理是通过使用JSR-303规范中的注解来实现的。JSR-3…

    Java 2023年5月17日
    00
  • Servlet3.0实现文件上传的方法

    Servlet是Java Web中最常用的技术之一,而文件上传又是Web应用程序中常用的一种功能,主要用于上传图片、音频、视频等文件。本文将详细介绍如何使用Servlet3.0实现文件上传的方法。 1. 基本概念 在开始之前,我们需要了解一些基本概念: 1.1 enctype 在HTML页面中指定表单的enctype属性是非常重要的,因为它决定了如何对表单数…

    Java 2023年6月15日
    00
  • skywalking自定义插件开发

    skywalking是使用字节码操作技术和AOP概念拦截Java类方法的方式来追踪链路的,由于skywalking已经打包了字节码操作技术和链路追踪的上下文传播,因此只需定义拦截点即可。 这里以skywalking-8.7.0版本为例。关于插件拦截的原理,可以看我的另一篇文章:skywalking插件工作原理剖析 1. 创建插件模块 在 apm-sniffe…

    Java 2023年4月25日
    00
  • Java中注解与原理分析详解

    下面是“Java中注解与原理分析详解”完整攻略: 简介 在Java中,注解可以用来给程序员自己的代码、库或者框架注释或标记额外信息,以便于利用这些注释或标记进行一些特殊的处理,比如代码生成、运行时检查或者其他的类型安全检测等。 注解本身就是类,只不过是一个继承了java.lang.annotation.Annotation的接口。注解的定义如下: publi…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部