alibaba-cloud-oss-java-sdk报错[阿里云oss]

报错

Parameter 0 of method inetIPv6Util in com.alibaba.cloud.nacos.utils.UtilIPv6AutoConfiguration required a single bean, but 2 were found:
    - spring.cloud.inetutils-org.springframework.cloud.commons.util.InetUtilsProperties: defined in null
    - inetUtilsProperties: defined by method 'inetUtilsProperties' in class path resource [org/springframework/cloud/commons/util/UtilAutoConfiguration.class]

父项目依赖:


<properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-boot.version>2.7.7</spring-boot.version>
        <spring-cloud.version>2021.0.5</spring-cloud.version>
        <spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

子项目依赖:

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alicloud-oss</artifactId>
            <version>2.2.0.RELEASE</version>
        </dependency>

upload代码:


@Autowired
private OSSClient ossClient;


@Test
void testOssClientUpload() throws FileNotFoundException {
  String bucketName = "cloud-big-mall";
  String objectName = "123.png";
  FileInputStream file = new FileInputStream("C:\Users\Alex.Mahone\Pictures\Screenshots\123.png");
  ossClient.putObject(bucketName, objectName, file);
}

yml配置:

    alicloud:
      access-key: xxx
      secret-key: xxx
      oss:
        endpoint: xxx

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
4 条回复 A 作者 M 管理员
  1. 这个报错信息表示在com.alibaba.cloud.nacos.utils.UtilIPv6AutoConfiguration类中,inetIPv6Util方法需要一个单例的bean,但是找到了两个bean:一个是spring.cloud.inetutils-org.springframework.cloud.commons.util.InetUtilsProperties,另一个是inetUtilsProperties

    要解决这个问题,你需要确保只有一个bean定义了InetUtilsProperties。你可以尝试以下方法:

    1. 检查你的项目中是否有多个配置文件(如application.properties或application.yml),并确保只有一个文件包含了InetUtilsProperties的定义。如果有多个文件,请删除其他文件中的InetUtilsProperties定义。

    2. 如果问题仍然存在,尝试在你的项目中排除其中一个包含InetUtilsProperties定义的依赖。例如,如果你使用的是Maven,可以在pom.xml文件中排除不需要的依赖:

    <dependency>    <groupId>com.alibaba.cloudgroupId>    <artifactId>alibaba-cloud-oss-java-sdkartifactId>    <exclusions>        <exclusion>            <groupId>org.springframework.cloudgroupId>            <artifactId>spring-cloud-commons-utilartifactId>        exclusion>    exclusions>dependency>
  2. 这个错误是因为在 Spring 应用程序中,有两个相同的 bean 定义,但是方法 inetIPv6Util 需要一个单一的 bean。为了解决这个问题,您可以尝试以下方法:

    1. 首先,检查您的项目依赖,确保您只使用了一个版本的 alibaba-cloud-oss-java-sdk 和 spring-cloud-starter-netflix-eureka-client。如果有多个版本,可能会导致这种冲突。
    2. 如果上述步骤没有解决问题,尝试在您的配置类中使用 @Bean 注解来定义 InetUtilsProperties bean。例如:

    import org.springframework.cloud.commons.util.InetUtilsProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    @Configuration
    public class MyConfig {
    @Bean
    public InetUtilsProperties inetUtilsProperties() {
    return new InetUtilsProperties();
    }
    }

  3. 您好!这个错误提示表明inetIPv6Util这个方法在自动装配时找到了2个InetUtilsProperties类型的Bean,但它需要的是单个的Bean。这种情况通常发生在Spring的自动装配机制无法确定使用哪一个Bean的时候。

    你可以尝试以下几种方式来解决这个问题:

    1. 指定使用哪一个InetUtilsProperties Bean:

      @Beanpublic InetIPv6Util inetIPv6Util(@Qualifier("inetUtilsProperties") InetUtilsProperties properties) { // ...}
    2. 排除不需要的InetUtilsProperties Bean:

      @Configuration@Exclude({SomeConfiguration.class})public class YourConfiguration { // ...}

    另外,建议你检查一下spring-cloud-starter-alicloud-oss的版本,确保它与你项目中使用的Spring Boot和Spring Cloud版本兼容。如果版本不兼容,也有可能导致这种错误。

  4. cloud可能有冲突这个错误是由于项目中有两个InetUtilsProperties类型的bean,而com.alibaba.cloud.nacos.utils.UtilIPv6AutoConfiguration类中的inetIPv6Util方法只需要一个参数。这导致了Spring Boot的自动配置失败,无法启动应用程序。

  5. 这个报错是因为在com.alibaba.cloud.nacos.utils.UtilIPv6AutoConfiguration类中,需要注入一个InetUtilsProperties类型的bean,但是父项目中存在两个定义了相同类型的bean。为了解决这个问题,你可以尝试以下方法:

    1. 检查父项目中是否有其他配置类或配置文件中是否重复定义了InetUtilsProperties类型的bean。如果有,请删除或修改其中一个。

    2. 如果父项目中没有其他配置类或配置文件中重复定义了InetUtilsProperties类型的bean,那么可能是由于依赖冲突导致的。你可以尝试将父项目的依赖管理中的spring-cloud-commons版本升级到最新版本,或者尝试使用其他版本的spring-cloud-commons替换当前的版本。

    3. 如果以上方法都无法解决问题,你可以尝试在子项目的pom.xml文件中显式地指定spring-cloud-commons的版本,以确保使用的是正确的版本。例如:

    <dependency>    <groupId>org.springframework.cloudgroupId>    <artifactId>spring-cloud-commonsartifactId>    <version>2021.0.5version>dependency>

    希望这些建议能帮助你解决问题。