Я новичок в программировании, поэтому, пожалуйста, наберитесь терпения (и для моего английского sh) :)
У меня проблема с привязкой моего java проекта к базе данных MySQL. Моя структура проекта выглядит следующим образом: структура проекта
А мой java класс "MyUtil" выглядит так:
package pl.projectspring.util;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.Reader;
public class MyUtil {
private static SqlSessionFactory sessionFactory;
static {
Reader reader;
try {
reader = Resources.getResourceAsReader("projectspring-config.xml");
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSessionFactory() {
return sessionFactory;
}
}
Итак, в моем getResourceAsReader не могу прочитать файл projectspring-config. xml. Этот файл находится в пакете resources , который я создал и пометил каталог как ресурсы root, но всегда получаю сообщение об ошибке.
и при попытке запустить приложение в браузере я получаю
HTTP Status 500 – Internal Server Error
Type Exception Report
Message Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class pl.projectspring.util.MyUtil
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class pl.projectspring.util.MyUtil
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause
java.lang.NoClassDefFoundError: Could not initialize class pl.projectspring.util.MyUtil
pl.projectspring.dao.EmployeeMapper.getEmployees(EmployeeMapper.java:15)
pl.projectspring.controller.EmployeeController.index(EmployeeController.java:16)
и более журналов
В Intellij у меня нет журналов с ошибкой в выводе.
Когда я меняю строку
reader = Resources.getResourceAsReader("projectspring-config.xml");
до
reader = Resources.getResourceAsReader("resources/projectspring-config.xml");
Я получил в браузере
HTTP Status 500 – Internal Server Error
Type Exception Report
Message Request processing failed; nested exception is java.lang.NullPointerException
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause
java.lang.NullPointerException
pl.projectspring.dao.EmployeeMapper.getEmployees(EmployeeMapper.java:15)
pl.projectspring.controller.EmployeeController.index(EmployeeController.java:16)
и более ...
но теперь в выводе Intellij я получил
java.io.IOException: Could not find resource resources/projectspring-config.xml
at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:89)
at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:76)
at org.apache.ibatis.io.Resources.getResourceAsReader(Resources.java:134)
at pl.projectspring.util.MyUtil.<clinit>(MyUtil.java:18)
at pl.projectspring.dao.EmployeeMapper.getEmployees(EmployeeMapper.java:15)
at pl.projectspring.controller.EmployeeController.index(EmployeeController.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
Я пытался переместить файл projectspring-config. xml в разные места, пытался сообщить sla sh до resources и всегда ту же проблему.
Я искал решения для Stackoverflow Я нашел это приглашение добавить в pom. xml
`<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
`
, но оно не работает.
Однако я делаю это из одного из учебников , который развернут на github, но написан на Eclipse (я использую Intellij). Когда я загружаю этот проект и пытаюсь запустить его, у меня возникает та же проблема.
Я буду благодарен за любую помощь