gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:13:15 45 4
gpt4 key购买 nike

我正在使用 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/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com