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

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怎么调用都没用

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2024-07-12 19:41
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    你遇到的问题看起来是多方面的,我会逐一帮你分析和解决。

    1. InvocationTargetException: 这个异常通常是由被调用的方法(在这种情况下是m.invoke(lr, uname, pwd))内部抛出的异常引起的。这意味着getlogin方法内部可能发生了异常。你需要检查getlogin方法内部是否有异常抛出,并且没有被捕获和处理。

    2. NoClassDefFoundError 和 ClassNotFoundException: 这两个错误表示 JVM 在运行时找不到指定的类。在你的情况下,是找不到org.apache.ibatis.io.Resources类。这通常是因为 MyBatis 依赖没有被正确添加到项目中,或者类路径没有设置正确。你提供的 Maven 配置截图显示你已经添加了 MyBatis 的依赖,但可能存在以下问题:

      • 依赖没有被正确解析或下载。
      • 项目没有被正确构建,导致依赖没有被包含在最终的构建产物中。
      • 如果你使用的是 IDE,可能需要更新项目或重新导入依赖。
    3. Maven 配置问题: 你已经提供了 Maven 配置的截图,但在这里我无法查看图片内容。确保你的 Maven 配置文件(pom.xml)中包含了 MyBatis 的依赖,并且版本号是正确的。你可以运行 mvn clean install 来清理并重新构建项目,确保所有依赖都被正确解析。

    4. 主函数与 Login_rigister_control 的差异: 如果Login_rigister类在主函数中可以正常运行,但在Login_rigister_control中调用时出现问题,这可能是因为Login_rigister_control中的环境与主函数中的环境不同。这可能包括类加载器的问题,或者在Login_rigister_control中的某些配置没有正确设置。

    解决步骤

    • 确保你的 IDE 使用的是最新版本的 Maven 项目设置。
    • 运行 mvn clean install 来清理项目并重新构建。
    • 检查你的 IDE 或服务器是否使用了正确的构建配置。
    • 确保没有多个版本的 MyBatis 依赖被包含在项目中,这可能会导致类加载问题。
    • 检查getlogin方法内部是否有未捕获的异常,并确保它们被适当地处理。

    如果上述步骤不能解决问题,你可能需要提供更多的代码或错误日志来进一步诊断问题。

    至于参考链接,由于我不能提供外部链接,但你可以搜索以下主题来获取更多信息:

    • "Java InvocationTargetException"
    • "Maven ClassNotFoundException"
    • "MyBatis NoClassDefFoundError"
    • "Maven clean install"

    希望这些信息能帮助你解决问题!如果需要进一步的帮助,请随时告诉我。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月12日

悬赏问题

  • ¥15 QQ邮箱过期怎么恢复?
  • ¥15 (标签-android|关键词-app)
  • ¥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)