1.人人开源代码生成器下载
人人开源的代码生成器地址为renren-generator: 人人开源项目的代码生成器,可在线生成entity、xml、dao、service、vue、sql代码,减少70%以上的开发任务
将该项目clone到本地
删掉代码生成器中的git文件夹
打开项目后端代码的资源管理器,将代码生成器的代码,复制粘贴到项目后端代码中
2.代码生成器配置
将代码生成器配置到聚合服务的modules里
以商品服务gulimall-pms为例
修改代码生成器的application.yml
修改代码生成器的generator.properties
修改Controller模板,注释@RequiresPermissions注解和相关代码,这是不会用到的内容
3.生成商品服务的代码
运行代码生成器
但是在运行时,报如下错误:
读取D:\maven3\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar时出错; zip END header not found
解决java: 读取D:\maven3\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar时出错; zip END header not found问题
1.考虑是否是由于前面把代码生成器的部分代码注释导致的,虽然从理论上不太可能,但是可以测试一下
经过把注释取消,发现运行时问题依旧。还是有问题
2.考虑打开logback-classic-1.2.3.jar,看看是否有问题
发现这个jar包只有3k,其他的jar包,基本都是几十k起步,所以初步怀疑这个包有问题。
3.从mvnrepository里搜索出问题的jar包
根据mvnrepository(Maven Repository: ch.qos.logback » logback-classic » 1.2.3)的显示,这个jar包大概率有问题
因此我采取下载这个jar包并且替换的方式测试
4.编译报错问题解决了,但是出现了新问题
C:\Users\ymcfy\.jdks\corretto-17.0.16\bin\java.exe -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints.jmx.exposure.include=*" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2024.2.4\lib\idea_rt.jar=54274" -Dfile.encoding=UTF-8 -classpath G:\code\java\gulimall\renren-generator\target\classes;D:\maven3\repository\org\springframework\boot\spring-boot-starter\2.2.6.RELEASE\spring-boot-starter-2.2.6.RELEASE.jar;D:\maven3\repository\org\springframework\boot\spring-boot\2.2.6.RELEASE\spring-boot-2.2.6.RELEASE.jar;D:\maven3\repository\org\springframework\boot\spring-boot-starter-logging\2.2.6.RELEASE\spring-boot-starter-logging-2.2.6.RELEASE.jar;D:\maven3\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\maven3\repository\org\apache\logging\log4j\log4j-to-slf4j\2.12.1\log4j-to-slf4j-2.12.1.jar;D:\maven3\repository\org\apache\logging\log4j\log4j-api\2.12.1\log4j-api-2.12.1.jar;D:\maven3\repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;D:\maven3\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\maven3\repository\org\yaml\snakeyaml\1.25\snakeyaml-1.25.jar;D:\maven3\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;D:\maven3\repository\org\springframework\spring-core\5.2.5.RELEASE\spring-core-5.2.5.RELEASE.jar;D:\maven3\repository\org\springframework\spring-jcl\5.2.5.RELEASE\spring-jcl-5.2.5.RELEASE.jar;D:\maven3\repository\org\springframework\boot\spring-boot-starter-web\2.2.6.RELEASE\spring-boot-starter-web-2.2.6.RELEASE.jar;D:\maven3\repository\org\springframework\boot\spring-boot-starter-json\2.2.6.RELEASE\spring-boot-starter-json-2.2.6.RELEASE.jar;D:\maven3\repository\com\fasterxml\jackson\core\jackson-databind\2.10.3\jackson-databind-2.10.3.jar;D:\maven3\repository\com\fasterxml\jackson\core\jackson-annotations\2.10.3\jackson-annotations-2.10.3.jar;D:\maven3\repository\com\fasterxml\jackson\core\jackson-core\2.10.3\jackson-core-2.10.3.jar;D:\maven3\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.10.3\jackson-datatype-jdk8-2.10.3.jar;D:\maven3\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.10.3\jackson-datatype-jsr310-2.10.3.jar;D:\maven3\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.10.3\jackson-module-parameter-names-2.10.3.jar;D:\maven3\repository\org\springframework\boot\spring-boot-starter-tomcat\2.2.6.RELEASE\spring-boot-starter-tomcat-2.2.6.RELEASE.jar;D:\maven3\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.33\tomcat-embed-core-9.0.33.jar;D:\maven3\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.33\tomcat-embed-el-9.0.33.jar;D:\maven3\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.33\tomcat-embed-websocket-9.0.33.jar;D:\maven3\repository\org\springframework\boot\spring-boot-starter-validation\2.2.6.RELEASE\spring-boot-starter-validation-2.2.6.RELEASE.jar;D:\maven3\repository\jakarta\validation\jakarta.validation-api\2.0.2\jakarta.validation-api-2.0.2.jar;D:\maven3\repository\org\hibernate\validator\hibernate-validator\6.0.18.Final\hibernate-validator-6.0.18.Final.jar;D:\maven3\repository\org\jboss\logging\jboss-logging\3.4.1.Final\jboss-logging-3.4.1.Final.jar;D:\maven3\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;D:\maven3\repository\org\springframework\spring-web\5.2.5.RELEASE\spring-web-5.2.5.RELEASE.jar;D:\maven3\repository\org\springframework\spring-beans\5.2.5.RELEASE\spring-beans-5.2.5.RELEASE.jar;D:\maven3\repository\org\springframework\spring-webmvc\5.2.5.RELEASE\spring-webmvc-5.2.5.RELEASE.jar;D:\maven3\repository\org\springframework\spring-aop\5.2.5.RELEASE\spring-aop-5.2.5.RELEASE.jar;D:\maven3\repository\org\springframework\spring-context\5.2.5.RELEASE\spring-context-5.2.5.RELEASE.jar;D:\maven3\repository\org\springframework\spring-expression\5.2.5.RELEASE\spring-expression-5.2.5.RELEASE.jar;D:\maven3\repository\com\baomidou\mybatis-plus-boot-starter\3.3.1\mybatis-plus-boot-starter-3.3.1.jar;D:\maven3\repository\com\baomidou\mybatis-plus\3.3.1\mybatis-plus-3.3.1.jar;D:\maven3\repository\com\baomidou\mybatis-plus-extension\3.3.1\mybatis-plus-extension-3.3.1.jar;D:\maven3\repository\com\baomidou\mybatis-plus-core\3.3.1\mybatis-plus-core-3.3.1.jar;D:\maven3\repository\com\baomidou\mybatis-plus-annotation\3.3.1\mybatis-plus-annotation-3.3.1.jar;D:\maven3\repository\org\mybatis\mybatis\3.5.3\mybatis-3.5.3.jar;D:\maven3\repository\org\mybatis\mybatis-spring\2.0.3\mybatis-spring-2.0.3.jar;D:\maven3\repository\org\springframework\boot\spring-boot-autoconfigure\2.2.6.RELEASE\spring-boot-autoconfigure-2.2.6.RELEASE.jar;D:\maven3\repository\org\springframework\boot\spring-boot-starter-jdbc\2.2.6.RELEASE\spring-boot-starter-jdbc-2.2.6.RELEASE.jar;D:\maven3\repository\com\zaxxer\HikariCP\3.4.2\HikariCP-3.4.2.jar;D:\maven3\repository\org\springframework\spring-jdbc\5.2.5.RELEASE\spring-jdbc-5.2.5.RELEASE.jar;D:\maven3\repository\org\springframework\spring-tx\5.2.5.RELEASE\spring-tx-5.2.5.RELEASE.jar;D:\maven3\repository\com\alibaba\druid\1.1.13\druid-1.1.13.jar;D:\maven3\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;D:\maven3\repository\commons-io\commons-io\2.5\commons-io-2.5.jar;D:\maven3\repository\commons-configuration\commons-configuration\1.10\commons-configuration-1.10.jar;D:\maven3\repository\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar;D:\maven3\repository\com\alibaba\fastjson\1.2.60\fastjson-1.2.60.jar;D:\maven3\repository\org\apache\velocity\velocity\1.7\velocity-1.7.jar;D:\maven3\repository\commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar;D:\maven3\repository\com\github\pagehelper\pagehelper-spring-boot-starter\1.2.5\pagehelper-spring-boot-starter-1.2.5.jar;D:\maven3\repository\org\mybatis\spring\boot\mybatis-spring-boot-starter\1.3.2\mybatis-spring-boot-starter-1.3.2.jar;D:\maven3\repository\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\1.3.2\mybatis-spring-boot-autoconfigure-1.3.2.jar;D:\maven3\repository\com\github\pagehelper\pagehelper-spring-boot-autoconfigure\1.2.5\pagehelper-spring-boot-autoconfigure-1.2.5.jar;D:\maven3\repository\com\github\pagehelper\pagehelper\5.1.4\pagehelper-5.1.4.jar;D:\maven3\repository\com\github\jsqlparser\jsqlparser\1.0\jsqlparser-1.0.jar;D:\maven3\repository\mysql\mysql-connector-java\8.0.17\mysql-connector-java-8.0.17.jar;D:\maven3\repository\com\oracle\ojdbc6\11.2.0.3\ojdbc6-11.2.0.3.jar;D:\maven3\repository\com\microsoft\sqlserver\sqljdbc4\4.0\sqljdbc4-4.0.jar;D:\maven3\repository\org\postgresql\postgresql\42.2.11\postgresql-42.2.11.jar;D:\maven3\repository\org\mongodb\mongo-java-driver\3.11.0\mongo-java-driver-3.11.0.jar io.renren.RenrenApplication
Failed to instantiate SLF4J LoggerFactory
Reported exception:
java.lang.NoClassDefFoundError: ch/qos/logback/core/joran/spi/JoranException
at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:417)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:362)
at org.apache.commons.logging.LogAdapter$Slf4jAdapter.createLocationAwareLog(LogAdapter.java:130)
at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:91)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:59)
at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:196)
at io.renren.RenrenApplication.main(RenrenApplication.java:14)
Caused by: java.lang.ClassNotFoundException: ch.qos.logback.core.joran.spi.JoranException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
... 10 more
Exception in thread "main" java.lang.NoClassDefFoundError: ch/qos/logback/core/joran/spi/JoranException
at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:417)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:362)
at org.apache.commons.logging.LogAdapter$Slf4jAdapter.createLocationAwareLog(LogAdapter.java:130)
at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:91)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:59)
at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:196)
at io.renren.RenrenApplication.main(RenrenApplication.java:14)
Caused by: java.lang.ClassNotFoundException: ch.qos.logback.core.joran.spi.JoranException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
... 10 more
进程已结束,退出代码为 1
这个问题是无法实例化 SLF4J 日志工厂
那么这种情况就部分地说明,前面替换jar包的方式,不一定是最合适的方式
5.我采取最简单粗暴的方式,把仓库所有内容都清空,从新下载一遍所需的依赖试一下
但是这个过程中,出现了一个很奇怪的现象,renren-generator里,只剩下了target一个文件夹了
把renren-generator重新导入进来
这个过程,仓库依赖也完成了重新下载,同时进入D:\maven3\repository\ch\qos\logback\logback-classic\1.2.3查看,发现logback-classic-1.2.3.jar的文件大小是284k,正常了
6.重新运行,报Failed to read candidate component class错误
重新运行后,旧问题解决了,也不编译报错,运行的跟SLFJ相关的报错也没有了,但是出现了新报错
C:\Users\ymcfy\.jdks\corretto-17.0.16\bin\java.exe -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints.jmx.exposure.include=*" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2024.2.4\lib\idea_rt.jar=54696" -Dfile.encoding=UTF-8 -classpath G:\code\java\gulimall\renren-generator\target\classes;D:\maven3\repository\org\springframework\boot\spring-boot-starter\2.2.6.RELEASE\spring-boot-starter-2.2.6.RELEASE.jar;D:\maven3\repository\org\springframework\boot\spring-boot\2.2.6.RELEASE\spring-boot-2.2.6.RELEASE.jar;D:\maven3\repository\org\springframework\boot\spring-boot-starter-logging\2.2.6.RELEASE\spring-boot-starter-logging-2.2.6.RELEASE.jar;D:\maven3\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\maven3\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\maven3\repository\org\apache\logging\log4j\log4j-to-slf4j\2.12.1\log4j-to-slf4j-2.12.1.jar;D:\maven3\repository\org\apache\logging\log4j\log4j-api\2.12.1\log4j-api-2.12.1.jar;D:\maven3\repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;D:\maven3\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\maven3\repository\org\yaml\snakeyaml\1.25\snakeyaml-1.25.jar;D:\maven3\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;D:\maven3\repository\org\springframework\spring-core\5.2.5.RELEASE\spring-core-5.2.5.RELEASE.jar;D:\maven3\repository\org\springframework\spring-jcl\5.2.5.RELEASE\spring-jcl-5.2.5.RELEASE.jar;D:\maven3\repository\org\springframework\boot\spring-boot-starter-web\2.2.6.RELEASE\spring-boot-starter-web-2.2.6.RELEASE.jar;D:\maven3\repository\org\springframework\boot\spring-boot-starter-json\2.2.6.RELEASE\spring-boot-starter-json-2.2.6.RELEASE.jar;D:\maven3\repository\com\fasterxml\jackson\core\jackson-databind\2.10.3\jackson-databind-2.10.3.jar;D:\maven3\repository\com\fasterxml\jackson\core\jackson-annotations\2.10.3\jackson-annotations-2.10.3.jar;D:\maven3\repository\com\fasterxml\jackson\core\jackson-core\2.10.3\jackson-core-2.10.3.jar;D:\maven3\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.10.3\jackson-datatype-jdk8-2.10.3.jar;D:\maven3\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.10.3\jackson-datatype-jsr310-2.10.3.jar;D:\maven3\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.10.3\jackson-module-parameter-names-2.10.3.jar;D:\maven3\repository\org\springframework\boot\spring-boot-starter-tomcat\2.2.6.RELEASE\spring-boot-starter-tomcat-2.2.6.RELEASE.jar;D:\maven3\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.33\tomcat-embed-core-9.0.33.jar;D:\maven3\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.33\tomcat-embed-el-9.0.33.jar;D:\maven3\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.33\tomcat-embed-websocket-9.0.33.jar;D:\maven3\repository\org\springframework\boot\spring-boot-starter-validation\2.2.6.RELEASE\spring-boot-starter-validation-2.2.6.RELEASE.jar;D:\maven3\repository\jakarta\validation\jakarta.validation-api\2.0.2\jakarta.validation-api-2.0.2.jar;D:\maven3\repository\org\hibernate\validator\hibernate-validator\6.0.18.Final\hibernate-validator-6.0.18.Final.jar;D:\maven3\repository\org\jboss\logging\jboss-logging\3.4.1.Final\jboss-logging-3.4.1.Final.jar;D:\maven3\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;D:\maven3\repository\org\springframework\spring-web\5.2.5.RELEASE\spring-web-5.2.5.RELEASE.jar;D:\maven3\repository\org\springframework\spring-beans\5.2.5.RELEASE\spring-beans-5.2.5.RELEASE.jar;D:\maven3\repository\org\springframework\spring-webmvc\5.2.5.RELEASE\spring-webmvc-5.2.5.RELEASE.jar;D:\maven3\repository\org\springframework\spring-aop\5.2.5.RELEASE\spring-aop-5.2.5.RELEASE.jar;D:\maven3\repository\org\springframework\spring-context\5.2.5.RELEASE\spring-context-5.2.5.RELEASE.jar;D:\maven3\repository\org\springframework\spring-expression\5.2.5.RELEASE\spring-expression-5.2.5.RELEASE.jar;D:\maven3\repository\com\baomidou\mybatis-plus-boot-starter\3.3.1\mybatis-plus-boot-starter-3.3.1.jar;D:\maven3\repository\com\baomidou\mybatis-plus\3.3.1\mybatis-plus-3.3.1.jar;D:\maven3\repository\com\baomidou\mybatis-plus-extension\3.3.1\mybatis-plus-extension-3.3.1.jar;D:\maven3\repository\com\baomidou\mybatis-plus-core\3.3.1\mybatis-plus-core-3.3.1.jar;D:\maven3\repository\com\baomidou\mybatis-plus-annotation\3.3.1\mybatis-plus-annotation-3.3.1.jar;D:\maven3\repository\org\mybatis\mybatis\3.5.3\mybatis-3.5.3.jar;D:\maven3\repository\org\mybatis\mybatis-spring\2.0.3\mybatis-spring-2.0.3.jar;D:\maven3\repository\org\springframework\boot\spring-boot-autoconfigure\2.2.6.RELEASE\spring-boot-autoconfigure-2.2.6.RELEASE.jar;D:\maven3\repository\org\springframework\boot\spring-boot-starter-jdbc\2.2.6.RELEASE\spring-boot-starter-jdbc-2.2.6.RELEASE.jar;D:\maven3\repository\com\zaxxer\HikariCP\3.4.2\HikariCP-3.4.2.jar;D:\maven3\repository\org\springframework\spring-jdbc\5.2.5.RELEASE\spring-jdbc-5.2.5.RELEASE.jar;D:\maven3\repository\org\springframework\spring-tx\5.2.5.RELEASE\spring-tx-5.2.5.RELEASE.jar;D:\maven3\repository\com\alibaba\druid\1.1.13\druid-1.1.13.jar;D:\maven3\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;D:\maven3\repository\commons-io\commons-io\2.5\commons-io-2.5.jar;D:\maven3\repository\commons-configuration\commons-configuration\1.10\commons-configuration-1.10.jar;D:\maven3\repository\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar;D:\maven3\repository\com\alibaba\fastjson\1.2.60\fastjson-1.2.60.jar;D:\maven3\repository\org\apache\velocity\velocity\1.7\velocity-1.7.jar;D:\maven3\repository\commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar;D:\maven3\repository\com\github\pagehelper\pagehelper-spring-boot-starter\1.2.5\pagehelper-spring-boot-starter-1.2.5.jar;D:\maven3\repository\org\mybatis\spring\boot\mybatis-spring-boot-starter\1.3.2\mybatis-spring-boot-starter-1.3.2.jar;D:\maven3\repository\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\1.3.2\mybatis-spring-boot-autoconfigure-1.3.2.jar;D:\maven3\repository\com\github\pagehelper\pagehelper-spring-boot-autoconfigure\1.2.5\pagehelper-spring-boot-autoconfigure-1.2.5.jar;D:\maven3\repository\com\github\pagehelper\pagehelper\5.1.4\pagehelper-5.1.4.jar;D:\maven3\repository\com\github\jsqlparser\jsqlparser\1.0\jsqlparser-1.0.jar;D:\maven3\repository\mysql\mysql-connector-java\8.0.17\mysql-connector-java-8.0.17.jar;D:\maven3\repository\com\oracle\ojdbc6\11.2.0.3\ojdbc6-11.2.0.3.jar;D:\maven3\repository\com\microsoft\sqlserver\sqljdbc4\4.0\sqljdbc4-4.0.jar;D:\maven3\repository\org\postgresql\postgresql\42.2.11\postgresql-42.2.11.jar;D:\maven3\repository\org\mongodb\mongo-java-driver\3.11.0\mongo-java-driver-3.11.0.jar io.renren.RenrenApplication
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.2.6.RELEASE)
2025-09-11 19:01:07.844 INFO 19996 --- [ main] io.renren.RenrenApplication : Starting RenrenApplication on ym with PID 19996 (G:\code\java\gulimall\renren-generator\target\classes started by ymcfy in G:\code\java\gulimall)
2025-09-11 19:01:07.846 INFO 19996 --- [ main] io.renren.RenrenApplication : No active profile set, falling back to default profiles: default
2025-09-11 19:01:08.001 WARN 19996 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [G:\code\java\gulimall\renren-generator\target\classes\io\renren\RenrenApplication.class]; nested exception is org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet: file [G:\code\java\gulimall\renren-generator\target\classes\io\renren\RenrenApplication.class]; nested exception is java.lang.IllegalArgumentException: Unsupported class file major version 61
2025-09-11 19:01:08.014 ERROR 19996 --- [ main] o.s.boot.SpringApplication : Application run failed
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [G:\code\java\gulimall\renren-generator\target\classes\io\renren\RenrenApplication.class]; nested exception is org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet: file [G:\code\java\gulimall\renren-generator\target\classes\io\renren\RenrenApplication.class]; nested exception is java.lang.IllegalArgumentException: Unsupported class file major version 61
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.scanCandidateComponents(ClassPathScanningCandidateComponentProvider.java:452) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:315) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:276) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:132) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:295) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:249) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:206) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:174) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:319) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:236) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:275) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:95) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:706) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:532) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at io.renren.RenrenApplication.main(RenrenApplication.java:14) ~[classes/:na]
Caused by: org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet: file [G:\code\java\gulimall\renren-generator\target\classes\io\renren\RenrenApplication.class]; nested exception is java.lang.IllegalArgumentException: Unsupported class file major version 61
at org.springframework.core.type.classreading.SimpleMetadataReader.getClassReader(SimpleMetadataReader.java:61) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:50) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:103) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:123) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.scanCandidateComponents(ClassPathScanningCandidateComponentProvider.java:428) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
... 20 common frames omitted
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 61
at org.springframework.asm.ClassReader.<init>(ClassReader.java:196) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.asm.ClassReader.<init>(ClassReader.java:177) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.asm.ClassReader.<init>(ClassReader.java:163) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.asm.ClassReader.<init>(ClassReader.java:284) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.core.type.classreading.SimpleMetadataReader.getClassReader(SimpleMetadataReader.java:58) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
... 24 common frames omitted
进程已结束,退出代码为 1
报错主要信息如下:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [G:\code\java\gulimall\renren-generator\target\classes\io\renren\RenrenApplication.class]; nested exception is org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet: file [G:\code\java\gulimall\renren-generator\target\classes\io\renren\RenrenApplication.class]; nested exception is java.lang.IllegalArgumentException: Unsupported class file major version 61
7.目前来看,出现这个问题的原因,初步推测是Java和Spring的版本不匹配
采取将jdk的版本从17降为8的方案
此时要注意的是,所有的涉及jdk版本的内容都要变,如果没有全部都修改的话,会出现下列问题
java: 警告: 源发行版 17 需要目标发行版 17
我的操作如下:
1)卸载jdk17
2)安装jdk8
3)配置jdk8的环境变量
4)修改项目结构中,项目->sdk、项目->语言级别
5)修改项目结构中,模块->每一个模块->源->的语言级别
6)修改项目结构中,模块->每一个模块->依赖->模块SDK
7)修改项目结构中,SDK
8)修改设置->构建、执行、部署->编译器->Java编译器
9)将maven仓库中的settings.xml中,所有对jdk17的描述修改为jdk8
10)将maven->配置文件,检查一下是否勾选了jdk17
11)将所有的仓库清空掉,重新加载所有依赖。此步骤可在上述所有步骤未生效时采用。清空后在maven重新下载源代码和文档
8.问题解决,运行成功
4.将商品服务代码合并入项目
运行成功后
全选所有的表,点击生成代码
会有一个需下载文件
解压后如下
复制main文件夹,打开gulimall-product源代码的src目录,将main文件夹复制到此处,此时代码生成器生成的java和resources文件夹内容也复制过来了
同时可以发现前端代码也粘贴过来了,这些代码目前用不到,因此删掉resources的src文件夹
5.整合商品服务代码的依赖问题
在代码生成器内容复制过来后,发现有如下这种依赖问题
需要一些通用公共类,建立一个模块,gulimall-common,用来存储公共类,让其他模块依赖此模块
让商品服务依赖common模块
接下来开始处理,有些类在renren-fast的coomon的utils里就有,例如
可以采取在common模块里添加common->utils包,然后把renren-fast的coomon的utils的PageUtils类与R类、Query类复制过来
接着发现在商品服务的dao里,需要mybatisplus依赖,因此在common模块里添加
接着发现在商品服务里需要lombok的依赖,因此在common模块里添加
对于R类,内部也有依赖问题,需要修改
接着发现在Query类,还有依赖问题,下图是修改后的截图,修改前是缺少对SQLFilter、StringUtils的依赖
先解决StringUtils问题,缺少的是commons-lang依赖,引入如下
对于SQLFilter问题,它需要的代码是人人开源自己写的,可以也从人人开源的xss包里找到。此处采取直接复制一整个文件夹的方式
在人人开源中路径如下:
复制粘贴后路径如下:
接下来修改Query类的引用路径
此时Query仍然有依赖问题,是Constant类,此处截图也是为修改后
解决方法也是采取将人人开源的Constant类复制粘贴到Common模块
后记:
1.在整个过程中,总共出现并解决了四个问题,分别是:
1)java: 读取D:\maven3\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar时出错; zip END header not found问题
2)Failed to instantiate SLF4J LoggerFactory
Reported exception:
java.lang.NoClassDefFoundError: ch/qos/logback/core/joran/spi/JoranException
3)org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class
4)java: 警告: 源发行版 17 需要目标发行版 17