MACOSX - java.lang.NoSuchMethodError: org.apache.http.impl.conn.CPool.setValidateAfterInactivity (I) V - PullRequest
0 голосов
/ 28 августа 2018

так что это чокнутый, и я бы хотел немного помочь.

Вот ошибка, которую я получаю

getS3Client(): Exception: java.lang.NoSuchMethodError: org.apache.http.impl.conn.CPool.setValidateAfterInactivity(I)V

когда я пытаюсь запустить этот блок кода

GrailsApplication grailsApplication

// Amazon AWS S3 properties
private awsProps = [  "loaded"      : false
                      , "S3Bucket"    : ""
                      , "AccessKeyId" : ""
                      , "AccessKeyPsw": ""
]

def getS3Client ( ) {
  try {
    if ( ! awsProps.loaded ) {
       loadAwsProperties()
    }

    def awsCreds = new BasicAWSCredentials( awsProps.AccessKeyId, awsProps.AccessKeyPsw )

    AmazonS3 s3Client
    s3Client = AmazonS3ClientBuilder.standard()
                .withCredentials( new AWSStaticCredentialsProvider( awsCreds ) )
                .withRegion( Regions.US_EAST_1 )
                .build()

        return s3Client
   } catch ( Throwable t ) {
        log.error ( "getS3Client(): Exception: ${t}" )
        return null
    }
}

Вот мои зависимости вверху файла

import com.amazonaws.HttpMethod
import com.amazonaws.auth.AWSStaticCredentialsProvider
import com.amazonaws.auth.BasicAWSCredentials

import com.amazonaws.regions.Regions

import com.amazonaws.services.s3.AmazonS3
import com.amazonaws.services.s3.AmazonS3ClientBuilder
import com.amazonaws.services.s3.model.*
import com.burris.portal.utils.Utils
import grails.core.GrailsApplication

import javax.imageio.ImageIO
import javax.imageio.ImageReader
import javax.imageio.stream.ImageInputStream
import java.awt.Graphics2D
import java.awt.RenderingHints
import java.awt.image.BufferedImage

import grails.gorm.transactions.Transactional
import groovy.util.logging.Log4j

Вот мои build.gradle зависимости от файла

* FOR AMAZON S3 force these org.apache.httpcomponents to the top of the classpath
 */
configurations.all {
    resolutionStrategy.force 'org.apache.httpcomponents:httpcore:4.4.9', 'org.apache.httpcomponents:httpclient:4.5.5'
}

/* Continue with other necessary dependencies */
dependencies {

    /* FOR AMAZON S3 4.5.5 JIRA_SCP-1357-MI-Inspection */
    compile 'org.apache.httpcomponents:httpcore:4.4.9'
    compile "org.apache.httpcomponents:httpclient:4.5.5"
    compile "com.amazonaws:aws-java-sdk-s3:1.11.328"

    /* FOR GROOVY HTTP */
    compile "org.codehaus.groovy.modules.http-builder:http-builder:0.6"
    ...
 }

Теперь вот кикер, он работает практически на всех других машинах разработчика, кроме моей, и я не смог понять, почему.

Это проект Groovy on Grails, и используемый мной движок сборки - это gradle с java.

Вот мои версии, хотя я протестировал несколько других, которые работают на машинах моего коллеги, но по какой-то причине не моей

java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

gradle --version

------------------------------------------------------------
Gradle 4.6
------------------------------------------------------------

Build time:   2018-02-28 13:36:36 UTC
Revision:     8fa6ce7945b640e6168488e4417f9bb96e4ab46c

Groovy:       2.4.12
Ant:          Apache Ant(TM) version 1.9.9 compiled on February 2 2017
JVM:          1.8.0_181 (Oracle Corporation 25.181-b13)
OS:           Mac OS X 10.13.6 x86_64

grails --version
| Grails Version: 3.2.11
| Groovy Version: 2.4.11
| JVM Version: 1.8.0_181

gradle dependencies --configuration=testRuntime | grep httpcore
    +--- org.apache.httpcomponents:httpcore:4.4.9
    |    +--- org.apache.httpcomponents:httpcore:4.4.9
    |         |    |    +--- org.apache.httpcomponents:httpcore:4.3 -> 4.4.9
    |         |    |    \--- org.apache.httpcomponents:httpcore-nio:4.3
    |         |    |         \--- org.apache.httpcomponents:httpcore:4.3 -> 4.4.9

Вот что я пробовал

  1. Обновление и понижение версии Java, gradle, grails и groovy version безуспешно. Мои коллеги работают над Gradle 3.1 и 4.8, поэтому я не думаю, что проблема здесь.
  2. Безуспешно переключился с openJDK на OracleJDK.
  3. Уничтожил мои зависимости gradle от глобального домашнего каталога и локального каталога репо через rm -rf ~/.gradle и rm -rf ./gradle и rm build/.dependencies, чтобы принудительно загрузить все репо безуспешно
  4. Пробовал /gradlew clean build безуспешно
  5. Клонировал репо в другое репо, и тот же результат произошел
  6. Перезагрузил компьютер, и это тоже не сработало
  7. Посмотрел GitHub и StackOverflow, и это заставило меня подумать, что обновление моей версии httpcore поможет, за исключением того, что все мои зависимости gradle для httpcore точно такие же, как на другом компьютере, на котором работает метод (см. Выше)

Вот моя версия MAC OSX - macOS High Sierra Version 10.13.6

Так что любая помощь будет признательна, так как я нахожусь в конце моего ума здесь. Приложение работает нормально почти во всех других ситуациях, но просто ломается при этом методе.

Ответы [ 2 ]

0 голосов
/ 23 июля 2019

У меня была такая же проблема. В моем случае эта тема, приведенная ниже, помогла мне исправить мою проблему. введите описание ссылки здесь

У меня httpclient: 4.5.9 и httpclient: 4.3. Затем я обновил httpcore до версии выше 4.4.

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpasyncclient</artifactId>
        <version>4.5.9</version>
      <exclusions>
        <exclusion>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpcore</artifactId>
      <version>4.4.11</version>
    </dependency>
0 голосов
/ 13 ноября 2018

Кажется, что эта ошибка: etS3Client(): Exception: java.lang.NoSuchMethodError: org.apache.http.impl.conn.CPool.setValidateAfterInactivity(I)V часто вызывается конфликтующими JAR-файлами в вашем пути к классам.

Вы можете проверить эту ссылку для примера: https://community.hortonworks.com/content/supportkb/150327/error-javalangnosuchmethoderror-orgapachehttpimplc.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...