动不了一点 2024-07-12 19:37 采纳率: 17.2%
浏览 0

mybatis的问题


 
public class Login_rigister_BaseServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        String method2 = request.getMethod();
        System.out.println(method2);
        String method=null;
        Login_rigister_control lc = new Login_rigister_control();
       if(method2.equals("GET")){
            method = request.getParameter("method");
           System.out.println("id:"+method);
       }
        else if(method2.equals("POST")){
           /*String jsonString = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
           System.out.println(jsonString);*/
            method = request.getParameter("method");
           System.out.println(method);
 
    }
        Class Class = lc.getClass();
        try {
            System.out.println("这里执行了吗");
            Method method1 = Class.getDeclaredMethod(method, HttpServletRequest.class, HttpServletResponse.class);
            method1.setAccessible(true);
            method1.invoke(lc,request,response);
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }
}
@WebServlet("/demo5")
public class Login_rigister_control extends Login_rigister_BaseServlet {
 public void getlogin(HttpServletRequest request, HttpServletResponse response) throws IOException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        String uname = request.getParameter("uname");
        String pwd = request.getParameter("pwd");
        String method = request.getParameter("method");
        System.out.println(method);
        System.out.println(uname);
        System.out.println(pwd);
        System.out.println(3434);
        Login_rigister lr = new Login_rigister();
        System.out.println(123);
        Class Class = lr.getClass();
        Method m = Class.getMethod(method, String.class, String.class);
        boolean glogin = (boolean)m.invoke(lr, uname, pwd);
        System.out.println(glogin);
 
        boolean getlogin = lr.getlogin(uname, pwd);
        System.out.println(234);
        if (getlogin==false){
            response.getWriter().write("密码错误!");
        }
        else{
            response.getWriter().write("登录成功!");
        }
 
        /*String jsonString = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
        System.out.println(jsonString);*/
    }

public class Login_rigister {
 
    public boolean getlogin(String uname,String pwd) throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
 
        //2.获取SqlSession对象,用它来执行sql(可以在这里设置自动提交事务)
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
 
        //3.获取UserMapper接口的代理对象
        Account account = sqlSession.getMapper(Account.class);
 
        boolean q = account.getlogin("1234", "qqqq");
        System.out.println(q);
        return  q;
    }
 
 
}
 
 

我的程序死活会卡在这里:
boolean glogin = (boolean)m.invoke(lr, uname, pwd);

报错信息:

java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at servlet.BaseServlet.Login_rigister_BaseServlet.service(Login_rigister_BaseServlet.java:42)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:716)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:130)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:109)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:663)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:387)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:904)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1746)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1148)
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
    at java.base/java.lang.Thread.run(Thread.java:842)
Caused by: java.lang.NoClassDefFoundError: org/apache/ibatis/io/Resources
    at servlet.controller.Login_rigister_control.getlogin(Login_rigister_control.java:41)
    ... 26 more
Caused by: java.lang.ClassNotFoundException: org.apache.ibatis.io.Resources
    ... 27 more
 
 

我的maven也正确配置了:

img

输出卡在了这里:

img

我的Login_rigister如果改成主函数然后自己给值就可以用,我在Login_rigister_control怎么调用都没用

  • 写回答

8条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-12 19:41
    关注

    引自免费微信小程序:皆我百晓生

    从你给出的错误信息来看,问题出在java.lang.NoClassDefFoundError: org/apache/ibatis/io/Resources。这表示你的程序找不到org.apache.ibatis.io.Resources这个类,因此抛出异常。这可能与你是否正确配置和导入MyBatis相关依赖有关。这个问题常常是因为缺失相关的JAR包或者版本冲突导致的。以下是几个可能的解决方案:

    检查依赖

    首先确认你的项目中是否已经包含了正确的MyBatis依赖。你应该在项目的pom.xml文件中检查是否有如下依赖:

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.5</version>
    </dependency>
    

    确保你的<version>标签中的版本号与你在代码中使用的版本一致。此外,确保没有其他版本的MyBatis依赖导致冲突。如果有其他版本的MyBatis依赖,尝试删除它们或更改版本以解决冲突。

    清理和重新构建项目

    尝试清理并重新构建你的项目。如果你使用的是Maven,可以在项目根目录下运行以下命令:

    mvn clean install
    

    这将清理你的项目并重新构建它,确保所有的依赖都被正确下载和配置。

    检查类路径和JAR包

    确保所有必要的JAR包都在你的类路径上。如果你是在一个IDE(如Eclipse或IntelliJ IDEA)中运行你的项目,检查项目设置以确保所有的库都被正确地包含在内。如果使用的是命令行编译和运行Java程序,确保在运行时通过-cp-classpath参数指定所有必要的JAR包。

    检查MyBatis配置和代码

    确认你的MyBatis配置和代码没有错误。特别是你加载MyBatis配置文件的部分,确保路径和资源名称都是正确的。此外,检查你的Login_rigister类中的getlogin方法,确保它正确地使用了MyBatis的API和方法。

    更新MyBatis版本

    如果上述步骤都没有解决问题,尝试更新MyBatis到最新的稳定版本,看看问题是否得到解决。有时候,旧版本的库可能存在已知的问题或不兼容的情况。

    如果问题仍然存在,请提供更多的代码和配置细节,以便我能更准确地诊断问题所在。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月12日

悬赏问题

  • ¥15 微信小程序web-view嵌套H5页面IOS左滑会出现相同的页面,有什么解决方法吗?
  • ¥60 如何批量获取json的url
  • ¥15 comsol仿真压阻传感器
  • ¥15 Python线性规划函数optimize.linprog求解为整数
  • ¥15 llama3中文版微调
  • ¥15 pg数据库导入数据序列重复
  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼