当前位置: 首页 > 知识库问答 >
问题:

404在使用jaxrs和apache eclipse(静态索引)执行get on rest api时返回。html工作得很好

楚嘉胜
2023-03-14

我用JavaEclipseTomcat8.5Maven创建了一个jersey REST应用程序(helloworld)。静态索引。在服务器上运行项目时,html工作正常。但剩下的是404。

REST api你好世界级:-

@Path("/hello")
public class MyJerseyPage{

    @GET
    @Produces(MediaType.TEXT_HTML)
    public String sayHtmlHello() {
        return "Hello from Jersey";
    }
}

其余配置类:-

@ApplicationPath("/api")
public class RESTConfig extends Application {

}

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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.nagendrahegde</groupId>
    <artifactId>therestproject</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>therestproject Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
           <groupId>org.glassfish.jersey.core</groupId>
           <artifactId>jersey-client</artifactId>
           <version>2.26</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-server</artifactId>
            <version>2.26</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-common</artifactId>
            <version>2.26</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>2.26</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet-core</artifactId>
            <version>2.26</version>
        </dependency>       
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>servlet-api</artifactId>
            <version>6.0.53</version>
        </dependency>
        <dependency>
            <groupId>org.apache.oltu.oauth2</groupId>
            <artifactId>org.apache.oltu.oauth2.client</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.googlecode.jsontoken</groupId>
            <artifactId>jsontoken</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.bundles.repackaged</groupId>
            <artifactId>jersey-guava</artifactId>
            <version>2.6</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>therestproject</finalName>
    </build>
</project>

网状物xml:-

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
</web-app>

输出:-

上车:http://localhost:8080/therestproject/api/hello -

以前,当pom.xml具有以下版本的依赖项时,相同的设置可以工作:-

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-servlet</artifactId>
    <version>1.19</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>servlet-api</artifactId>
    <version>6.0.44</version>
</dependency>

它曾经有用!当我换POM时,它开始抛出404。XML并将JERSEY版本更改为最新版本。我想保留最新的jersey版本,因为我必须在上面做oauth2。请帮忙。

共有1个答案

西门骁
2023-03-14

这个答案可能指向一个可能的解决方案:添加jersey ri依赖项。

如何仅使用注释(无web.xml)设置JAX-RS应用程序

 类似资料:
  • 问题内容: 我正在使用托管在Google App Engine上的Java,Jetty和Jersey 2.18(目前最新)。 假设我有一项服务 当我做: 我正确地收到了一个application / json内容类型和主体。但是当我这样做时: 与返回任何4XX或5XX状态相同,我收到一个text / html内容类型以及以下HTML正文: 而不是我放入.entity()的对象 编辑:这是我的web

  • 按预期列出了这些组: 和按预期工作: 但是,和都返回和。 我想要的探测记录在自动配置的HealthIndicator列表中。 在https://spring.io/blog/2020/03/25/liveness-and-readid-probes-with-spring-boot中也介绍了该特性。 我尝试了的几个拼写,插入了(在博客文章中),但没有效果。 这里有一个相关的答案,但它并不直接解决我

  • 我们有一个需要跨多个索引查询的要求,如下所示 我们使用的是ElasticSearch 5.1.1. http://localhost:9200/index1,index2,index3/type1,type2/_search 查询: 但是,我们可能无法预先知道该索引是否存在,如果上述任何一个索引都不存在,我们将得到以下错误。 一个明显的方法是检查索引是否已经存在,但我希望避免额外的调用。 注意:至

  • 问题内容: 我一直在使用Golang测试Google App Engine SDK,但在投放静态html页面时遇到问题。如果我在under处理程序中添加了内容,那很好,但是当尝试从我的Go应用程序内部进行路由时;尝试网址时,页面返回404。 我的文件系统设置为: 我的主要样子是这样的: 问题答案: 您不应该使用Go处理程序来提供静态文件(除非您希望合并其他逻辑,例如高级日志记录或计数)。 您可以在

  • 问题内容: 一个充满火花的世界: 我该如何返回静态文件index.html? 笔记: 我需要这个index.html放在罐子里 本着Spark Java简洁性的精神,我想尽可能避免使用模板,这对于静态页面而言可能会显得过大。 问题答案: 您可以通过以下方法将绝对路径传递到静态资源目录来实现: 或者通过此方法传递相对路径: 在设置任何路线之前,请先调用此选项。在静态资源目录的根目录中创建index.

  • 在生产中,我想禁用/acturetatorendpoint,但仍然允许/acturetator/health。我使用SecurityConfigurerAdapter尝试了下面的代码,但它返回500。我想返回一个404,并得到一个“页面找不到”错误页面。非常感谢任何帮助