如何解决Grails 4 war 部署到 Tomcat 失败,没有这样的方法:reactor.core.publisher.Mono.from(Publisher)Mono/invokeStatic
但是我在将 grails 4.0.11 生成的 war 文件部署到 Tomcat(v8.5.39) 时遇到了这个问题:
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]: Factory method 'requestMappingHandlerAdapter' threw exception; nested exception is java.lang.BootstrapMethodError: java.lang.IllegalAccessError: no such method: reactor.core.publisher.Mono.from(Publisher)Mono/invokeStatic
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622)
... 33 more
Caused by: java.lang.BootstrapMethodError: java.lang.IllegalAccessError: no such method: reactor.core.publisher.Mono.from(Publisher)Mono/invokeStatic
at org.springframework.core.ReactiveAdapterRegistry$ReactorRegistrar.registeradapters(ReactiveAdapterRegistry.java:194)
at org.springframework.core.ReactiveAdapterRegistry.<init>(ReactiveAdapterRegistry.java:70)
at org.springframework.core.ReactiveAdapterRegistry.getSharedInstance(ReactiveAdapterRegistry.java:179)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.<init>(RequestMappingHandlerAdapter.java:169)
我正在从 grails 3.3.11 升级项目。
WAR 正在使用 ./gradlew bootWar
构建。
本地开发环境没有问题。
我的 build.gradle
中的依赖项:
compile 'org.springframework.boot:spring-boot-starter-logging'
compile 'org.springframework.boot:spring-boot-autoconfigure'
compile 'org.grails:grails-core'
compile 'org.springframework.boot:spring-boot-starter-actuator'
provided 'org.springframework.boot:spring-boot-starter-tomcat'
compile 'org.grails:grails-web-boot'
compile 'org.grails:grails-logging'
compile 'org.grails:grails-plugin-rest'
compile 'org.grails:grails-plugin-databinding'
compile 'org.grails:grails-plugin-i18n'
compile 'org.grails:grails-plugin-services'
compile 'org.grails:grails-plugin-url-mappings'
compile 'org.grails:grails-plugin-interceptors'
compile 'org.grails.plugins:cache'
compile 'org.grails.plugins:scaffolding'
compile 'org.grails.plugins:gsp'
compile 'org.grails:grails-web-fileupload'
compile 'org.apache.tomcat:tomcat-jdbc'
runtime "com.bertramlabs.plugins:asset-pipeline-grails:3.2.4"
compile "org.grails.plugins:async"
compile 'com.google.code.gson:gson:2.8.5'
testCompile 'org.grails:grails-gorm-testing-support'
testCompile 'org.grails:grails-web-testing-support'
testRuntime 'org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1'
testRuntime 'net.sourceforge.htmlunit:htmlunit:2.18'
agent "org.springframework:springloaded:1.2.8.RELEASE"
runtimeOnly "io.methvin:directory-watcher:0.9.6"
compileOnly "io.micronaut:micronaut-inject-groovy"
compile 'org.postgresql:postgresql:42.2.20'
compile 'org.codehaus.groovy:groovy-dateutil:2.5.14'
compile 'org.grails.plugins:hibernate5'
compile 'org.hibernate:hibernate-core:5.4.18.Final'
compile 'org.hibernate:hibernate-ehcache:5.4.18.Final'
compile 'org.grails.plugins:spring-security-core:4.0.3'
compile 'org.grails.plugins:spring-security-acl:4.0.0.M2'
compile 'org.grails.plugins:postgresql-extensions:7.0.0'
compile 'org.springframework.security.extensions:spring-security-saml2-core:1.0.3.RELEASE'
compile 'org.grails.plugins:quartz:2.0.13'
compile("org.quartz-scheduler:quartz:2.2.3") {
exclude group: 'slf4j-api',module: 'c3p0'
}
compile 'com.google.api-ads:ads-lib:4.2.0'
compile 'com.google.api-ads:adwords-axis:4.2.0'
compile "com.googlecode.java-diff-utils:diffutils:1.2.1"
compile 'net.coobird:thumbnailator:0.4.8'
compile 'org.apache.ant:ant:1.9.4'
compile 'commons-io:commons-io:2.5'
compile 'com.cloudbees.thirdparty:zendesk-java-client:0.6.2'
compile 'org.yaml:snakeyaml:1.23'
compile 'cglib:cglib:2.2.2'
compile 'org.apache.httpcomponents:httpclient:4.5'
compile 'org.apache.pdfBox:pdfBox:1.8.9'
compile 'commons-validator:commons-validator:1.6'
compile 'io.fastjson:boon:0.33'
compile 'com.thoughtworks.xstream:xstream:1.4.8'
compile 'com.amazonaws:aws-java-sdk-s3:1.11.423'
compile 'com.amazonaws:aws-java-sdk-core:1.11.423'
compile 'com.amazonaws:aws-java-sdk-lambda:1.11.423'
compile 'com.jcraft:jsch:0.1.53'
compile 'com.opencsv:opencsv:5.2'
compile project(':common')
compile project(':query')
compile project(':query-generator')
compile 'org.grails.plugins:audit-logging:4.0.3'
compile 'bouncycastle:bcprov-jdk14:138'
compile 'org.grails.plugins:csv:1.0'
compile 'org.grails.plugins:cookie:2.0.5'
runtime 'org.grails.plugins:grails-console:2.1.1'
compile 'org.grails.plugins:database-migration:3.1.0'
compile 'org.liquibase:liquibase-core:3.10.1'
compile 'org.grails.plugins:qrcode:0.9'
compile 'org.grails.plugins:mail:3.0.0'
compile 'org.grails.plugins:grails-executor:0.4'
compile 'org.reflections:reflections:0.9.10'
compile 'org.grails.plugins:sentry:11.7.25'
runtime 'org.jolokia:jolokia-core'
testRuntime 'net.sourceforge.htmlunit:htmlunit:2.18'
testRuntime 'org.seleniumhq.selenium:selenium-support:2.53.1'
testCompile 'org.seleniumhq.selenium:selenium-chrome-driver:2.53.1'
compile 'org.grails.plugins:views-json:2.0.4'
testCompile 'org.grails.plugins:greenmail:2.0.0.RC3'
compile (group: 'com.nimbusds',name: 'nimbus-jose-jwt',version: '8.10')
{ exclude group: 'org.ow2.asm' }
testCompile group: 'org.skyscreamer',name: 'jsonassert',version: '1.5.0'
compile 'org.codehaus.gpars:gpars:1.1.0'
testCompile 'org.grails:grails-test-mixins:3.3.0'
compile 'com.syncron.amazonaws:simba-athena-jdbc-driver:2.0.2'
testCompile 'org.mock-server:mockserver-netty:5.11.2'
解决方法
我进行了依赖项扫描并搜索了任何与 reactive 相关的内容。
它发现 reactive-streams 是 micronaut 的依赖项。
+--- org.grails:grails-core -> 4.0.10
| +--- org.codehaus.groovy:groovy:2.5.14
| +--- org.slf4j:slf4j-api:1.7.30
| +--- org.slf4j:jcl-over-slf4j:1.7.30
| | \--- org.slf4j:slf4j-api:1.7.30
| +--- io.micronaut:micronaut-inject:1.3.7
| | +--- org.slf4j:slf4j-api:1.7.26 -> 1.7.30
| | +--- javax.annotation:javax.annotation-api:1.3.2
| | +--- javax.inject:javax.inject:1
| | +--- io.micronaut:micronaut-core:1.3.7
| | | +--- org.slf4j:slf4j-api:1.7.26 -> 1.7.30
| | | +--- org.reactivestreams:reactive-streams:1.0.3
排除它解决了问题,但我不知道它可能导致什么后果。
configurations.all {
exclude group: 'org.reactivestreams',module: 'reactive-streams'
}
在 war
时部署到 Tomcat 工作正常,并且该应用程序目前看起来很稳定。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。