gpt4 book ai didi

java - 代码作为 Java 应用程序工作正常,但在服务器上抛出 NullPointerException

转载 作者:行者123 更新时间:2023-11-30 07:29:24 25 4
gpt4 key购买 nike

这是我的 DataService 对象。

public class DataService {

private final String path = "src/main/resources/DataSource/data1.txt";

private ArrayList<Person> _personList;
private ArrayList<Course> _courseList;
private QueryHandler _handler;

public DataService() throws ParseException, JSONException, IOException {

_personList = new ArrayList<>();
_courseList = new ArrayList<>();
String jsonData = Reader.readFile(path);

JSONParser.read(jsonData, _courseList, _personList);

_handler = new QueryHandler(_personList, _courseList);

}
public QueryHandler get_handler() {
return _handler;
}


}

当我在调用者函数中调用它时,以下方式可以正常工作并返回所需的数据。

public class Caller {

public static void main(String[] args) throws IOException {

DataService service = null;
try {
service = new DataService();
} catch (JSONException | ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ArrayList<Course> clist = service.get_handler().getAllCourses();


clist.forEach(course -> System.out.println(course.toString()));

}
}

但是现在,当我尝试以这种方式将其调用为 WebService 时,它​​会抛出一连串错误。

@Path("/courses")
public class CourseService {

@GET
@Produces(MediaType.APPLICATION_XML)
public ArrayList<Course> getAllCourses(){
DataService service = null;
try {
service = new DataService();
} catch (JSONException | ParseException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return service.get_handler().getAllCourses();
}
}

这是我遇到的错误,

javax.servlet.ServletException: java.lang.NullPointerException
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:489)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.lang.NullPointerException
Service.CourseService.getAllCourses(CourseService.java:30)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:497)
org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)
org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
org.glassfish.jersey.internal.Errors.process(Errors.java:315)
org.glassfish.jersey.internal.Errors.process(Errors.java:297)
org.glassfish.jersey.internal.Errors.process(Errors.java:267)
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

我的项目使用 jersey 来创建 REST API。我在这里做错了什么。任何帮助表示赞赏。

最佳答案

我猜你的问题是这一行:

private final String path = "src/main/resources/DataSource/data1.txt";

如果您在 IDE 中运行代码而不是在应用程序服务器中运行代码,则此方法有效 - 因为那里实际上没有 src/main/resources 文件夹。

尝试像这样加载你的txt文件:

Thread.currentThread().getContextClassLoader().getResourceAsStream("DataSource/data1.txt");

关于java - 代码作为 Java 应用程序工作正常,但在服务器上抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36365605/

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