Exception in thread “main“ java.lang.NoSuchMethodError: ‘java.lang.String org.junit.platform.engine.

初始化的项目出现junit报错

Exception in thread "main" java.lang.NoSuchMethodError: 'java.lang.String org.junit.platform.engine.discovery.MethodSelector.getMethodParameterTypes()' at com.intellij.junit5.JUnit5TestRunnerUtil.loadMethodByReflection(JUnit5TestRunnerUtil.java:127) at com.intellij.junit5.JUnit5TestRunnerUtil.buildRequest(JUnit5TestRunnerUtil.java:102) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:43) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:231) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)

这个 java.lang.NoSuchMethodError 错误表明在运行时,JVM 尝试调用 org.junit.platform.engine.discovery.MethodSelector.getMethodParameterTypes() 方法,但当前加载的 MethodSelector 类版本中并没有这个方法。这通常是由于 ‌JUnit 平台库的不同版本之间存在不兼容‌ 所致。

可在pom文件中修改一下parent的版本号,修改到兼容的版本

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.17</version> <relativePath/> </parent>

Read more

Java 注解与反射实战:自定义注解从入门到精通

Java 注解与反射实战:自定义注解从入门到精通

前言:注解到底是什么?         你是否经常在 Java 代码中看到@Override、@Deprecated这样的标记?这些就是注解 —— 一种给代码 "贴标签" 的机制。注解本身不直接影响代码执行,但能通过工具(如编译器)或框架(如 Spring)赋予代码额外含义。         自定义注解则是让我们根据业务需求创建专属 "标签",结合反射机制能实现强大的动态逻辑(比如日志记录、权限校验、ORM 映射等)。本文将从基础到实战,带你掌握自定义注解的定义、元注解的作用,以及如何通过反射让注解 "生效"。 一、自定义注解基础:@interface 关键字         自定义注解使用 @interface 关键字定义,本质上是一种特殊的接口(编译后会生成继承 java.lang.annotation.Annotation 的接口)

By Ne0inhk
javaSE初阶————多线程进阶(2)

javaSE初阶————多线程进阶(2)

今天来继续带大家学习多线程进阶部分啦,今天是最后一期啦,下期带大家做一些多线程的题,我们就可以开始下一个环节啦; 1,JUC(java.util.concurrent)的常见类 1)Callable 接口 我们之前学过Runnable接口,它是一个任务,我们可以在创建线程的时候把任务丢给线程使用匿名内部类等方法来完成创建对象,现在我们有了一个新的方法来创建任务,并且执行这个任务,就是我们的Callable接口,Runnable的run方法是没有返回值的,但是Callable提供了返回值,支持泛型,我们就能获取到我们想要的参数, 我们来看看是怎么用的; Callable<Integer> callable = new Callable<Integer>() { @Override public Integer call() throws Exception { return null; } }; 我们使用匿名内部类的方法创建一个Callable对象,并且重写call方法,就相当与重写Runnable的run方法, 我们是不能把这个对象直接放到线程的构造方法中的,因为Th

By Ne0inhk
Java 部署:滚动更新(K8s RollingUpdate 策略)

Java 部署:滚动更新(K8s RollingUpdate 策略)

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕Java部署这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * Java 部署:滚动更新(K8s RollingUpdate 策略) * 什么是滚动更新(Rolling Update)? * 为什么 Java 应用特别需要滚动更新? * Kubernetes 滚动更新的核心机制 * 默认值 * 参数详解 * 构建一个支持滚动更新的 Java 应用 * 1. 创建 Spring Boot 项目 * 2. 编写主类 * 3. 添加控制器 * 4. 配置 Actuator 健康端点 * 5. 构建 Docker 镜像 * 编写 Kubernetes

By Ne0inhk