java @ComponentScan给出错误,如何解决?

c0vxltue  于 2023-06-04  发布在  Java
关注(0)|答案(1)|浏览(284)

我正在学习spring和springboot,并创建了一个项目,在那里我使用配置类来创建bean。
我还有一个pom.xml文件,我在其中添加了依赖项。
代码如下:
pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>

 <groupId>com.lcwd.withoutboot</groupId>
 <artifactId>SpringWithoutBoot</artifactId>
 <version>1.0-SNAPSHOT</version>
 <packaging>jar</packaging>

 <name>SpringWithoutBoot</name>
 <url>http://maven.apache.org</url>

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>20</maven.compiler.source>
  <maven.compiler.target>20</maven.compiler.target>
</properties>

<dependencies>
  <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
  <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>5.2.24.RELEASE</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>5.2.24.RELEASE</version>
</dependency>

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>3.8.1</version>
  <scope>test</scope>
</dependency>

AppConfig.java

package com.lcwd.withoutboot.config;

import com.lcwd.withoutboot.beans.CartService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan(basePackages = {"com.lcwd.withoutboot"})
public class AppConfig {

    @Bean("cartService1")
    public CartService cartService(){
        return new CartService();
    }
}

App.java

package com.lcwd.withoutboot;

import com.lcwd.withoutboot.beans.CartService;
import com.lcwd.withoutboot.beans.UserService;
import com.lcwd.withoutboot.config.AppConfig;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Application Started" );
        ApplicationContext context=new AnnotationConfigApplicationContext(AppConfig.class);
        CartService cartService=context.getBean("cartService1", CartService.class);
        cartService.createCart();

        //UserService userService=context.getBean(UserService.class);
        //userService.saveUser();
    }
}

我得到的错误如下:

Jun 01, 2023 12:56:58 PM org.springframework.context.support.AbstractApplicationContext refresh
WARNING: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [C:\Users\soura\Desktop\SpringWithoutBoot\target\classes\com\lcwd\withoutboot\App.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 [C:\Users\soura\Desktop\SpringWithoutBoot\target\classes\com\lcwd\withoutboot\App.class]; nested exception is java.lang.IllegalArgumentException: Unsupported class file major version 64
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [C:\Users\soura\Desktop\SpringWithoutBoot\target\classes\com\lcwd\withoutboot\App.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 [C:\Users\soura\Desktop\SpringWithoutBoot\target\classes\com\lcwd\withoutboot\App.class]; nested exception is java.lang.IllegalArgumentException: Unsupported class file major version 64
    at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.scanCandidateComponents(ClassPathScanningCandidateComponentProvider.java:457)
    at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:316)
    at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:276)
    at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:132)
    at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:296)
    at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:250)
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:207)
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:175)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:320)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:237)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:280)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:96)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:707)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:533)
    at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:89)
    at com.lcwd.withoutboot.App.main(App.java:18)
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 [C:\Users\soura\Desktop\SpringWithoutBoot\target\classes\com\lcwd\withoutboot\App.class]; nested exception is java.lang.IllegalArgumentException: Unsupported class file major version 64
    at org.springframework.core.type.classreading.SimpleMetadataReader.getClassReader(SimpleMetadataReader.java:60)
    at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:49)
    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:103)
    at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:123)
    at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.scanCandidateComponents(ClassPathScanningCandidateComponentProvider.java:429)
    ... 15 more
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 64
    at org.springframework.asm.ClassReader.<init>(ClassReader.java:196)
    at org.springframework.asm.ClassReader.<init>(ClassReader.java:177)
    at org.springframework.asm.ClassReader.<init>(ClassReader.java:163)
    at org.springframework.asm.ClassReader.<init>(ClassReader.java:284)
    at org.springframework.core.type.classreading.SimpleMetadataReader.getClassReader(SimpleMetadataReader.java:57)
    ... 19 more

有人能告诉我如何解决这个错误吗?

gpfsuwkq

gpfsuwkq1#

根据异常信息中的推测,这可能是由于您正在使用的Java版本与用于编译“App.class”的Java版本之间的不兼容。在这种情况下,您需要确保使用的Java运行时环境(JRE)或开发工具与编译代码时使用的Java版本兼容。

相关问题