我正在try 在我的Spring Boot项目中集成Spring-cloud-gcp-pub-substream-binder,以使用来自GCP pub子主题的事件,并在运行该项目时收到以下错误.

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    com.google.cloud.spring.stream.binder.pubsub.provisioning.PubSubChannelProvisioner.provisionConsumerDestination(PubSubChannelProvisioner.java:81)

The following method did not exist:

    'boolean com.google.pubsub.v1.TopicName.isParsableFrom(java.lang.String)'

The calling method's class, com.google.cloud.spring.stream.binder.pubsub.provisioning.PubSubChannelProvisioner, was loaded from the following location:

    jar:file:/Users/pranay.garg/.m2/repository/com/google/cloud/spring-cloud-gcp-pubsub-stream-binder/3.3.0/spring-cloud-gcp-pubsub-stream-binder-3.3.0.jar!/com/google/cloud/spring/stream/binder/pubsub/provisioning/PubSubChannelProvisioner.class

The called method's class, com.google.pubsub.v1.TopicName, is available from the following locations:

    jar:file:/Users/pranay.garg/.m2/repository/com/google/api/grpc/proto-google-cloud-pubsub-v1/1.84.0/proto-google-cloud-pubsub-v1-1.84.0.jar!/com/google/pubsub/v1/TopicName.class

The called method's class hierarchy was loaded from the following locations:

    com.google.pubsub.v1.TopicName: file:/Users/pranay.garg/.m2/repository/com/google/api/grpc/proto-google-cloud-pubsub-v1/1.84.0/proto-google-cloud-pubsub-v1-1.84.0.jar


Action:

Correct the classpath of your application so that it contains compatible versions of the classes com.google.cloud.spring.stream.binder.pubsub.provisioning.PubSubChannelProvisioner and com.google.pubsub.v1.TopicName

我使用的是Spring Boot v2.6.1 和我的依赖关系管理

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.google.cloud</groupId>
                <artifactId>libraries-bom</artifactId>
                <version>3.3.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.google.cloud</groupId>
                <artifactId>spring-cloud-gcp-dependencies</artifactId>
                <version>3.3.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2021.0.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

和我的相关依赖项

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>spring-cloud-gcp-pubsub-stream-binder</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-binder-kafka</artifactId>
        </dependency

我认为这是一个版本兼容性问题,PubSubChannelProvisioner试图调用TopicName中的方法,但该方法不存在,但我无法找到解决此问题的方法. 如果您需要任何其他可能遗漏的信息,请告诉我. 感谢您的帮助,谢谢.

推荐答案

我在Spring-Cloud-GCP GitHub回购上提出了这个问题,并解决了这个问题.事实证明,这是由于库中的版本冲突-bom依赖项管理版本solution

Java相关问答推荐

如何跟踪我在数组中的位置

Selenium Java:无法访问IFRAME内部的元素

使用包私有构造函数强制子类Java类

我想了解Java中的模块化.编译我的应用程序时,我有一个ResolutionException

在现代操作系统/硬件上按块访问数据值得吗?

@ IdClass with @ Inheritance(策略= InheritanceType. SINGLE_TABLE)

如何在带有Micronaut的YAML中使用包含特殊字符的字符串作为键

Spring Boot@Cachebale批注未按预期工作

我无法获取我的Java Spring应用程序的Logback跟踪日志(log)输出

当涉及到泛型时,类型推理在Java中是如何工作的?

安装Java Jar应用程序的Install4j遇到ClassNotFoundException的运行时错误

将Spring Boot 3.2.0升级到3.2.1后查询执行错误

舰队运行配置Maven版本

Java组件项目中的JavaFX对话框国际化

插入中的JOOQ序列,设置为VS值

在Eclipse中可以使用外部字体吗?

如何使用jooq更新记录?

使用MediaPlayer类在一段时间后停止播放音乐

为什么创建Java动态代理需要接口参数

如何使用Java ZoneID的区域设置?