在上下文路径 [/VirtualStore] 上部署了基于 servlet 的 Web 应用程序,但上下文无法从以下日志开始。
19-Mar-2021 11:46:35.075 INFO [main] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of deployment descriptor [C:\Users\Ing.Girbson BIJOU\Documents\NetBeansProjects\apache-tomcat-10.0.4-windows-x64\apache-tomcat-10.0.4\conf\Catalina\localhost\VS.xml] has finished in [448] ms
19-Mar-2021 11:46:35.079 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Users\Ing.Girbson BIJOU\Documents\NetBeansProjects\apache-tomcat-10.0.4-windows-x64\apache-tomcat-10.0.4\webapps\docs]
19-Mar-2021 11:46:35.291 WARNING [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [143] milliseconds.
19-Mar-2021 11:46:35.306 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Users\Ing.Girbson BIJOU\Documents\NetBeansProjects\apache-tomcat-10.0.4-windows-x64\apache-tomcat-10.0.4\webapps\docs] has finished in [228] ms
19-Mar-2021 11:46:35.307 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Users\Ing.Girbson BIJOU\Documents\NetBeansProjects\apache-tomcat-10.0.4-windows-x64\apache-tomcat-10.0.4\webapps\examples] …Run Code Online (Sandbox Code Playgroud) 我有一个 Spring Boot 项目,我尝试使用嵌入的 Tomcat 10 而不是 Tomcat 7。我将以下内容添加到我的 POM 中...
<properties>
<tomcat.version>10.0.5</tomcat.version>
...
</properties>
Run Code Online (Sandbox Code Playgroud)
然后我运行之前运行的相同命令......
mvn clean package -U && java -cp target\my.jar;props -Dloader.main=com.my.Main org.springframework.boot.loader.PropertiesLauncher
Run Code Online (Sandbox Code Playgroud)
但现在它刚刚启动,然后就自行关闭了。最后的消息是...
2021-05-13 15:35:42.105 INFO 10084 --- [ main] com.my.Main : Started Main in 42.918 seconds (JVM running for 44.009)
2021-05-13 15:35:42.190 INFO 10084 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况以及如何升级而不产生这种副作用?
当我开发我的java项目时,我使用:
Java version: 1.8,
Apache Tomcat version 9.0.x
然后,我用来Tomcat 10.0.x运行我的项目(对我的项目进行了很少的修改)。我必须将javax与包相关的导入更改为jakarta包导入。
当我构建项目时,我收到以下错误;
java: cannot access javax.servlet.ServletException
class file for javax.servlet.ServletException not found
Run Code Online (Sandbox Code Playgroud)
当我搜索修复程序时,我发现我需要在文件Java Servlet API中包含依赖项pom.xml。这样我就可以成功构建项目了。
java: cannot access javax.servlet.ServletException
class file for javax.servlet.ServletException not found
Run Code Online (Sandbox Code Playgroud)
Java Servlet API为什么我在迁移到 Tomcat 10 时必须包含依赖项?Java Servlet API依赖项,但这是一个正确的修复吗?我一直在徒劳地尝试实现 tomcat 9 的 jakarta servlet,而不是以前的 javax.servlet 实现(因为我的理解是 jakarta 包是前进的方向)。问题是,当我将浏览器指向我的 servlet 的 url 时,我收到以下错误...
java.lang.ClassCastException: class cti.nm.web.Index cannot be cast to class javax.servlet.Servlet (cti.nm.web.Index is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @48c76607; javax.servlet.Servlet is in unnamed module of loader java.net.URLClassLoader @621be5d1)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:432)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.base/java.lang.Thread.run(Thread.java:832)
Run Code Online (Sandbox Code Playgroud)
问题已经很明显了。Tomcat 正在尝试将我的 jakarta.servlet.http.HttpServlet 转换为 javax.servlet.Servlet,这显然不起作用。我无法想象的是如何告诉它 servlet 实际实现的类。
类本身被声明为...
package cti.nm.web;
import jakarta.servlet.http.HttpServlet;
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
public class Index extends …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Tomcat Docker 容器中部署 war 文件,但总是获取404 Not Found页面。我按照Intellij Tutorial创建了 Spring Boot 项目,它在我本地的机器上运行良好。
这是我的 Dockerfile:
FROM tomcat:latest
ADD WebTutorial.war /usr/local/tomcat/webapps/ROOT.war
Run Code Online (Sandbox Code Playgroud)
我使用以下命令来构建映像并运行容器:
$ docker build -t sp-tomcat .
$ docker run -it -p 8080:8080 --name sp-tomcat sp-tomcat
Run Code Online (Sandbox Code Playgroud)
容器运行后,我登录到容器并看到 war 文件已部署(我想):

这是日志输出:
21-Dec-2021 07:41:35.819 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/10.0.14
21-Dec-2021 07:41:35.821 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Dec 2 2021 22:01:36 UTC
21-Dec-2021 07:41:35.821 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 10.0.14.0
21-Dec-2021 07:41:35.821 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS …Run Code Online (Sandbox Code Playgroud) 如果我放入最新的 org.apache.tomcat.embed:tomcat-embed-core:10.1.0-M16 依赖项,则会导致 import javax.servlet.http.HttpServletResponse 无法解析。
这是我的 build.gradle,
plugins {
id 'org.springframework.boot' version '2.7.0'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'war'
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.apache.tomcat.embed:tomcat-embed-core:10.1.0-M16'
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
谢谢你!
我的第一个 Web 应用程序有问题。我使用 IntelliJ 作为 IDE,使用 Tomcat 作为 Web 服务器。我尝试访问的每个 servlet 都会抛出 404 错误。即使我复制了一些 youtube 教程,这似乎也很有魅力。
表单中的按钮将我发送到:http://localhost:8080/IUBHQuiz/login
你能告诉我有什么问题吗?我快疯了。
登录.java
package com.example.IUBHQuiz;
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.sql.*;
@WebServlet("/login")
public class login extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String email = request.getParameter("fmail");
String pass = request.getParameter("fpw");
if(email.equals("j") && pass.equals("j"))
{
RequestDispatcher rs = request.getRequestDispatcher("/main.jsp");
rs.forward(request, response);
}
else
{
out.println("Username or Password incorrect");
RequestDispatcher …Run Code Online (Sandbox Code Playgroud) 我正在介绍有关 servlet 的大学章节。这本书要求我复制一段代码并在cmd中运行它。它不会在 cmd 中运行,并且这一章模糊地解释了我如何安装 Java EE。这是代码和错误:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class NameServlet extends HttpServlet {
public static void main(String[] args) {
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body style=’background-color: lightyellow’>");
String name = "Wow, this servlet works great!!";
out.println("Name: " + name);
out.println("</body>");
out.println("</html>");
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
Run Code Online (Sandbox Code Playgroud)
错误:

我有一个与此处DispatcherServlet cannot be cast to Servlet 类似的问题,这是使用 Eclipse 运行新的 Spring MVC 项目时的问题。但是,所有答案都建议使用 Maven 的解决方案,而我没有使用 Maven。
我为这个问题搜索了一天,但没有解决方案。
INFO: Starting Servlet engine: [Apache Tomcat/10.0.4]
Mar 22, 2021 9:59:10 AM org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom
WARNING: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took
[447] milliseconds.
Mar 22, 2021 9:59:10 AM org.apache.jasper.servlet.TldScanner scanJars
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for
this logger for a complete list of JARs that were scanned but …Run Code Online (Sandbox Code Playgroud) 我创建了一个名为TestingServlet 的java servlet,当我尝试编译文件时出现错误。我已经为 servlet-api.jar 设置了类路径,并尝试在编译时包含类路径:
javac -cp "C:\Program Files\Apache Software Foundation\Tomcat 10.0\lib\servlet-api.jar" TestingServlet.java
Run Code Online (Sandbox Code Playgroud)
代码是:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class TestingServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>Servlet Testing</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("Welcome to the Servlet Testing Center");
out.println("</BODY>");
out.println("</HTML>");
}
}
Run Code Online (Sandbox Code Playgroud)
错误是:
TestingServlet.java:6: error: cannot find symbol
public class TestingServlet extends HttpServlet {
^
symbol: class HttpServlet
TestingServlet.java:8: error: cannot find symbol
public …Run Code Online (Sandbox Code Playgroud) 我有一个使用 Tomcat 服务器启动 CC war 文件的特定需求。我创建了两个 war 文件 - 一个使用“warTomcatDbcp”命令,另一个使用“warTomcatJndi”命令。但是,当我尝试启动 Tomcat 服务器时,我在这两个战争中都遇到了错误。为了确保这不是 tomcat 的问题,我部署了一个从小型 Java 项目创建的 war 文件,并且没有出现任何问题。
“gwb warTomcatDbcp”或“gwb warTomcatJndi”是在 Guidewire 中构建 war 文件的正确方法吗?此外,正确构建 war 文件是否还需要任何其他步骤或配置?
请注意 - 我正在尝试使用 OOTB 版本进行此操作,并且没有进行任何代码更改,而且我也能够从 studio jetty 服务器启动服务器。
这是当我尝试从 tomcat 启动服务器时收到的 cc 日志。
31-Oct-2023 09:02:57.488 SEVERE [main] org.apache.catalina.core.StandardContext.listenerStart Error configuring application listener of class [com.guidewire.pl.system.websocket.WebSocketServletContextListener]
java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2352)
at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:800)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1317)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1165)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:491)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:473)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:143)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4349)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4860)
at …Run Code Online (Sandbox Code Playgroud) 这是我的 Eclipse 范围的 JRE 定义,清楚地显示已添加 servlet-api.jar:
这里有同样的旧导入错误,似乎永远无法解决。Java不是很棒吗?有人有可能对为什么这仍然不起作用有一个简单、事实的答案吗?