一:概述
运行tomcat时出现错误,显示一个端口进程已经存在。运行多次都出现错误。还有一个错误是
Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) at java.base/jdk.internal.loader.ClassLoadersAppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ... 10 more
二:具体说明
<1>先看看pom.xml里面的配置
<project xmlns="http:///POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http:///POM/4.0.0 http:///maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>javaweb-test1</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>javaweb-test1 Maven Webapp</name>
<url>http://</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>javaweb-test1</finalName>
<plugins>
<!--给maven web项目添加tomcat插件-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!--项目发布后的根目录-->
<path>/</path>
<!--项目用tomcat的服务端口-->
<port>8080</port>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
</properties>
</project>Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) at java.base/jdk.internal.loader.ClassLoadersAppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) at space3v.yonghengyu.servlet.HelloServletTest.main(HelloServletTest.java:8) Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoadersAppClassLoader.loadClass(ClassLoaders.java:188)atjava.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)atspace3v.yonghengyu.servlet.HelloServletTest.main(HelloServletTest.java:8)Causedby:java.lang.ClassNotFoundException:javax.servlet.http.HttpServletatjava.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)atjava.base/jdk.internal.loader.ClassLoadersAppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ... 10 more发现里面并没有错误,一开始百度搜索说是使用对应项目的命令行使用mvn -clear package仍然运行报错,最后还说是将对应的
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>版本改为1.8,最后发现还是错误的。这个明显是不行的,因为我是用的是tomcat11,这个版本对应的jdk版本最低是21.最后使用还是21
<2>这个问题使用命令行杀死对应的进程
这个错误表明您的 Java 程序在运行时找不到 javax.servlet.http.HttpServlet 类,这通常是由于缺少 Servlet 相关的 JAR 包所致。您可以尝试以下方法来解决这个问题:
确保您已经正确地将 Servlet API JAR 包添加到您的项目中。您可以从 Maven 仓库或者 Servlet 官方网站下载适当的 Servlet API JAR 包,并将其放置在项目的类路径下。
如果您使用的是 IDE(例如 Eclipse、IntelliJ IDEA 等),请确保您已经将 Servlet API JAR 包添加到项目的构建路径中。您可以在项目的构建路径设置中添加 JAR 文件。
检查您的项目配置文件(例如 web.xml)是否正确地引用了 Servlet 相关的类。确保您使用的是正确的类路径和类名称。
如果您正在使用 Tomcat 等 Servlet 容器来运行您的应用程序,确保您已经正确地配置了容器,并将 Servlet API JAR 包添加到容器的类路径中。

最后运行之后这个问题解决成功运行。

















