我有一個使用 eclipse 和 tomcat 9 服務器運行的應用程式。當我運行該應用程式時,它會在瀏覽器中打開 index.html 頁面,但在索引頁面中呼叫的 API 出現 404 狀態錯誤。
我從各種 stackoverflow 頁面嘗試了多種方法,但似乎沒有任何效果。
我有一個帶有以下宣告的 Httpservlet
@WebServlet("/api/modules")
public class ModuleController extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
// logic
}
}
即使我直接嘗試點擊 localhost:8080/application-context/api/modules 我也會得到相同的 404 錯誤。
此外,我的應用程式沒有 web.xml。
注意:該應用程式在其他人的系統上運行良好。
以下是 pom.xml 供參考。
<?xml version="1.0" encoding="UTF-8"?>
<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>ch.bfh.ti</groupId>
<artifactId>academia-02</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<!-- General properties -->
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- Version properties -->
<servlet.version>5.0.0</servlet.version>
<jackson.version>2.13.1</jackson.version>
<postgresql.version>42.3.2</postgresql.version>
<jetty.version>11.0.8</jetty.version>
<h2.version>2.1.210</h2.version>
<junit.version>5.8.2</junit.version>
<rest-assured.version>4.5.0</rest-assured.version>
<!-- Checkstyle properties -->
<checkstyle.config.location>src/etc/checkstyle.xml</checkstyle.config.location>
<checkstyle.header.file>src/etc/checkstyle-header.txt</checkstyle.header.file>
</properties>
<dependencies>
<!-- Servlet dependencies -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- Database dependency -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgresql.version}</version>
</dependency>
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-jaxrs_2.10</artifactId>
<version>1.3.1</version>
<scope>compile</scope>
</dependency>
<!-- Test dependencies -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-annotations</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>${h2.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>${rest-assured.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.0.0-M5</version>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.11.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>site</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.basedir}/target/site/images</outputDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/site/markdown/images</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.2.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.3.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>3.1.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>3.0.0-M5</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.2</version>
<reportSets>
<reportSet>
<reports>
<report>checkstyle</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
</project>
404錯誤參考:
HTTP Status 404 – Not Found
Type Status Report
Message The requested resource [/academia-02/api/modules] is not available
Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
我也已經嘗試過以下方法:
- 更改tomcat版本
- 添加 web.xml
- clean 構建應用程式,然后在 tomcat 上運行
- 檢查生成的類是否在正確的位置包含 Servlet 類
- 更新 tomcat 屬性 -> 切換位置
- 更新 tomcat 屬性 -> 在服務器位置安裝用戶 tomcat
你能告訴我在這里可以做什么嗎?
uj5u.com熱心網友回復:
您正在宣告對 Servlet Spec 5.0 的依賴(并明確宣告您正在使用 Jakarta servlet)。
因此,您必須使用 Tomcat 10。按宣告/設計作業。沒什么大不了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/448827.html
標籤:蚀 雄猫 小服务程序 雅加达 http-status-code-404
上一篇:拒絕訪問您無權訪問監控
