Yanhuachejian 2023-12-09 14:40 采纳率: 72.7%
浏览 6
已结题

idea连接数据库,添加jar包后仍然失败

今天使用idea连接数据库,但是一直无法正常运行大致情况如下

img


不知道是哪里的原因,上网搜了一下,发现是jar包没有添加进去,跟着教程做了两次,仍然没有效果,这是哪里的问题

img


右键添加我都建了三个库了,到底是哪里出了问题。

img

img


我是跟黑马学的,代码写得没错,为啥就是运行不了

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-09 16:07
    关注

    【相关推荐】



    • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7761745
    • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:idea的社区版本能不能用?--idea编译无法找到jar包问题(插曲)
    • 除此之外, 这篇博客: 源码分析 | 咋嘞?过期了?为什么在Idea中加个jar包就能继续使用?中的 3. 开始我们的模拟破解之路 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      JetbrainsCrack.java & Agent 操作类

      /**
       * 博客:http://bugstack.cn
       * 公众号:bugstack虫洞栈 | 更多原处优质干货
       * Agent 类,所有程序启动只要配置了 -javaagent: 都会走到 premain 方法
       */
      public class JetbrainsCrack {
      
          public static void premain(String args, Instrumentation inst) {
              System.out.println("**************************************");
              System.out.println("*       公众号:bugstack虫洞栈       *");
              System.out.println("*     博客:https://bugstack.cn      *");
              System.out.println("*   你用剑,我用刀,好的代码都很烧! *");
              System.out.println("**************************************");
              inst.addTransformer(new MethodEntryTransformer());
          }
      
          static class MethodEntryTransformer implements ClassFileTransformer {
      
              private Logger logger = LoggerFactory.getLogger(MethodEntryTransformer.class);
      
              public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {
      
                  try {
                      if (className.equals("com/jetbrains/ls/newLicenses/DecodeCertificates")) {
                          ClassReader cr = new ClassReader(classfileBuffer);
                          ClassNode cn = new ClassNode();
                          cr.accept(cn, 0);
                          List<MethodNode> methodNodes = cn.methods;
                          for (MethodNode methodNode : methodNodes) {
                              if ("decodeLicense".equals(methodNode.name)) {
                                  InsnList insns = methodNode.instructions;
                                  //清除指令
                                  insns.clear();
                                  insns.add(new VarInsnNode(Opcodes.ALOAD, 1)); // 将本地指定的引用存入栈中
                                  insns.add(new InsnNode(Opcodes.ARETURN));          // 从方法中返回引用类型的数据
                                  // 访问结束
                                  methodNode.visitEnd();
                                  ClassWriter cw = new ClassWriter(0);
                                  cn.accept(cw);
                                  byte[] bytes = cw.toByteArray();
                                  // 输出字节码到Class
                                  this.outputClazz(bytes);
                                  // 返回最新字节码
                                  return cw.toByteArray();
                              }
                          }
                      }
                  } catch (Exception e) {
                      return classfileBuffer;
                  }
      
                  return classfileBuffer;
              }
      
              private void outputClazz(byte[] bytes) {
                  // 输出类字节码
                  FileOutputStream out = null;
                  try {
                      out = new FileOutputStream("ASMDecodeCertificates.class");
                      logger.info("ASM类输出路径:{}", (new File("")).getAbsolutePath());
                      out.write(bytes);
                  } catch (Exception e) {
                      e.printStackTrace();
                  } finally {
                      if (null != out) try {
                          out.close();
                      } catch (IOException e) {
                          e.printStackTrace();
                      }
                  }
              }
      
          }
      
      }
      
      
      • 在这个类中可以看到有一个 premain 方法,这个是在被 java agent 处理后的程序入口,所有信息类和方法都会到这个入口
      • 之后我们使用 inst.addTransformer(new MethodEntryTransformer()); 添加我们自己的处理逻辑,这个逻辑也是用字节码编程技术代理类的过程。这个过程也就是我们平时开发中那些不需硬编码就可以监控方法执行时长的逻辑一样
      • MethodEntryTransformer 实现了 ClassFileTransformer 的 transform 方法,也就是真正操作字节码的过程。
        在这个类方法中首先需要找到我们的授权码校验类 com/jetbrains/ls/newLicenses/DecodeCertificates ,每一个版本的IDEA不一样,同时授权逻辑校验也不一样
        紧接着在找到授权校验类里面的校验方法,if (“decodeLicense”.equals(methodNode.name))
        接下来就需要对字节码进行处理了,这里面的处理过程比较粗暴,直接将原来方法里的指令内容清空。然后使用 new VarInsnNode(Opcodes.ALOAD, 1) 将本地指定的引用存入栈中
        之后将我们的入参内容直接返回,new InsnNode(Opcodes.ARETURN),从方法中返回引用类型的数据。在以往旧版本的 IDEA 破解中比较简单,直接把最终需要的破解内容返回即可,里面描述了 IDEA 各个软件的使用期限
        最终将我们处理后的字节码返回给方法,return cw.toByteArray();这个时候虽然你大爷还是你大爷,但你大娘已经不是你大娘了
        为了测试的验证我们将变更后的字节码代码(大娘)输出到工程目录下,也就是一个 class 文件,下文测试时候验证

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月3日
  • 已采纳回答 12月26日
  • 修改了问题 12月9日
  • 创建了问题 12月9日

悬赏问题

  • ¥15 全志v3s怎么设置高速时钟,使用的荔枝派zero开发板,串口2需要921600的波特率
  • ¥15 关于#单片机#的问题:Lora通讯模块hc-14电路图求内部原理图
  • ¥50 esp32 wroom 32e 芯片解锁
  • ¥15 bywave配置文件写入失败
  • ¥20 基于Simulink的ZPW2000轨道电路仿真
  • ¥15 pycharm找不到在环境装好的opencv-python
  • ¥15 在不同的执行界面调用同一个页面
  • ¥20 基于51单片机的数字频率计
  • ¥50 M3T长焦相机如何标定以及正射影像拼接问题
  • ¥15 keepalived的虚拟VIP地址 ping -s 发包测试,只能通过1472字节以下的数据包(相关搜索:静态路由)