java - Glassfish 服务器在应找到页面的路径上显示错误 404

标签 java gradle intellij-idea jersey glassfish

我正在使用 Intellij 和 Glassfish 服务器开发一个 Web 应用程序。但是,它显示错误 404,页面未找到。具体来说:

HTTP Status 404 - Not Found

type Status report

messageNot Found

descriptionThe requested resource is not available.

GlassFish Server Open Source Edition 4.1.1

我无法理解为什么会发生这种情况。我正在使用 Gradle 执行此操作。

我首先使用 web.xml 实现它,然后通过扩展 Application 但在这两种情况下结果是相同的。

我尝试了 SO 上类似问题的解决方案,但没有一个有效。

这是 RootResource 代码:

package com.pd.jersey.jaxb;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/")
class RootResource {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello(){
        return "Hello";
    }
}

这是 Todo 资源:

package com.pd.jersey.jaxb;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/todo")
public class TodoResource {
    @GET
    @Produces({MediaType.APPLICATION_XML})
    public Todo getXML() {
        Todo todo = new Todo();
        todo.setSummary("Application XML Todo Summary");
        todo.setDescription("Application XML Todo Description");
        return todo;
    }

    // This method is called if JSON is requested
    @GET
    @Produces({MediaType.APPLICATION_JSON})
    public Todo getJSON() {
        Todo todo = new Todo();
        todo.setSummary("Application JSON Todo Summary");
        todo.setDescription("Application JSON Todo Description");
        return todo;
    }

    // This can be used to test the integration with the browser
    @GET
    @Produces({ MediaType.TEXT_XML })
    public Todo getHTML() {
        Todo todo = new Todo();
        todo.setSummary("XML Todo Summary");
        todo.setDescription("XML Todo Description");
        return todo;
    }
}

这是应用程序代码:

package com.pd.jersey.jaxb;

import javafx.application.Application;
import javafx.stage.Stage;

import javax.ws.rs.ApplicationPath;
import java.util.HashSet;
import java.util.Set;

@ApplicationPath("/rest")
public class RestApplication extends Application {
    // All request scoped resources and providers
    public Set<Class<?>> getClasses() {
        Set<Class<?>> classes = new HashSet<>();
        classes.add(TodoResource.class);
        return classes;
    }

    // all singleton resources and providers
    public Set<Object> getSingletons() {
        Set<Object> singletons = new HashSet<>();
        return singletons;
    }

    @Override
    public void start(Stage primaryStage) throws Exception {

    }
}

这是我的运行配置的屏幕截图:

run-configuration

我似乎没有发现哪里出了问题。如果有任何帮助,我将不胜感激。

最佳答案

您覆盖了错误的应用程序。您使用的是 Java FX,它用于制作图形用户界面。您需要扩展javax.ws.rs.core.Application 。这就是为什么当你重写一个方法时你应该总是使用@Override;所以您知道您实际上正在重写类中的方法(即 getClasses()getSingletons())。如果您添加了 @Override,您会发现它不是您正在使用的 Application 中的方法。

关于java - Glassfish 服务器在应找到页面的路径上显示错误 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54848670/

相关文章:

java - 如何知道子实体的生成字段? ORM 是否保留子元素顺序?

gradle - geb-gradle-saucelabs集成的驱动程序错误

java - 在 Java 中使用 JDBC 创建数据库时 Main 方法无法正常工作

git - MacOS Sierra 更新后如何修复 git 路径?

grails - 更改Web项目的URL?

java - 可见签名位置错误

java - 即使 jar 在 WEB-INF/lib 中,也找不到包

java - gradle刷新失败:没有方法签名

gradle - 如何在 Gradle buildSrc 和项目的其余部分之间共享变量?

java - 正则表达式比较以/abc/开头的单词