Java 嵌入Tomcat的WebSocket是404

Java 嵌入Tomcat的WebSocket是404,java,tomcat,websocket,Java,Tomcat,Websocket,我上了两门课: 带有嵌入式Tomcat的主类(8.5.20) Websocket的服务端点 我在IntelliJ IDEA上主修课程 并运行以下JavaScript:newWebSocket('ws://localhost:8080/ws') 在谷歌浏览器的控制台上 我期望响应代码是200,但实际上是404 我怎样才能解决这个问题 主要类别: package webapp; import org.apache.catalina.LifecycleException; import org.a

我上了两门课:

  • 带有嵌入式Tomcat的主类(8.5.20)
  • Websocket的服务端点
  • 我在IntelliJ IDEA上主修课程 并运行以下JavaScript:
    newWebSocket('ws://localhost:8080/ws')
    在谷歌浏览器的控制台上

    我期望响应代码是200,但实际上是404

    我怎样才能解决这个问题

    主要类别:

    package webapp;
    
    
    import org.apache.catalina.LifecycleException;
    import org.apache.catalina.startup.Tomcat;
    
    import javax.servlet.ServletException;
    import java.io.File;
    
    public class Main {
        private static final String STATIC_DIR = "src/main/static/";
    
        public static void main(String[] args) throws ServletException, LifecycleException {
            Tomcat tomcat = new Tomcat();
            tomcat.setPort(8080);
    
            File staticDir = new File(STATIC_DIR);
            tomcat.addWebapp("/", staticDir.getAbsolutePath());
    
            tomcat.start();
            tomcat.getServer().await();
        }
    }
    
    服务器端点:

    package webapp.websocket;
    
    import javax.websocket.OnClose;
    import javax.websocket.OnMessage;
    import javax.websocket.OnOpen;
    import javax.websocket.Session;
    import javax.websocket.server.ServerEndpoint;
    
    @ServerEndpoint("/ws")
    public class SampleWebSocket {
    
        @OnOpen
        public void onOpen(Session session) {
            System.out.println("open");
        }
    
    
        @OnClose
        public void onClose(Session session) {
            System.out.println("close");
        }
    
        @OnMessage
        public String onMessage(String text) {
            System.out.println("message:" + text);
            return "Server:" + text;
        }
    }
    
    谢谢。

    我找到了解决办法。 这个问题是重复的

    我阅读并编辑了pom.xml

    下面是我的pom.xml的全部内容

    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.example</groupId>
        <artifactId>websocket-sample</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <name>websocket-sample</name>
    
        <properties>
            <java.version>1.8</java.version>
            <maven.compiler.target>${java.version}</maven.compiler.target>
            <maven.compiler.source>${java.version}</maven.compiler.source>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-core</artifactId>
                <version>8.5.20</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tomcat</groupId>
                <artifactId>tomcat-websocket</artifactId>
                <version>8.5.20</version>
            </dependency>
            <dependency>
                <groupId>javax.websocket</groupId>
                <artifactId>javax.websocket-api</artifactId>
                <version>1.1</version>
            </dependency>
        </dependencies>
    </project>
    
    
    4.0.0
    com.example
    网袋样品
    1.0.0-SNAPSHOT
    网袋样品
    1.8
    ${java.version}
    ${java.version}
    UTF-8
    org.apache.tomcat.embed
    tomcat嵌入式内核
    8.5.20
    org.apache.tomcat
    TomcatWebSocket
    8.5.20
    javax.websocket
    javax.websocket-api
    1.1
    
    只需将以下依赖项添加到
    pom.xml

    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-websocket</artifactId>
        <version>8.5.20</version>
    </dependency>
    
    
    org.apache.tomcat
    TomcatWebSocket
    8.5.20