Spring 학습 노트 (21): 아 리 클 라 우 드 OSS 의 자바 SDK 를 사용 할 때 발생 하 는 문제 (첨부: 테스트 코드)

10053 단어 봄 학습 노트
  • 2017 - 4 - 25 업데이트:
  • 오늘 OSS 로 파일 을 올 렸 는데 또 문제 가 생 겼 어 요.
  • 문제 설명: unknown host: jalon - test. oss - cn - beijing. aliyuncs. com /;예전 에는 멀쩡 했 는데 오늘 은 틀 렸 다.
  • 원인: 홈 페이지 에서 오랫동안 검 사 했 는데 https 때 문 이 었 습 니 다.oss 가 베 이 징 지역 에서 요청 한 헤더 가 http 에서 https 로 업데이트 되 어 호스트 에 접근 하 는 데 오류 가 발생 했 습 니 다.
  • 해결 방법: OSSClient 의 endpoint 설정 을http://oss-cn-beijing.aliyuncs.com... 로 바꾸다https://oss-cn-beijing.aliyuncs.com


  • 이전 질문:
    아 리 운 홈 페이지https://help.aliyun.com/document_detail / 32024. html 당시 다음 과 같은 오류 가 발생 했 습 니 다.
        Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/ssl/TrustStrategy
            at com.aliyun.oss.OSSClient.(OSSClient.java:268)
            at com.aliyun.oss.OSSClient.(OSSClient.java:193)
            at com.aliyun.oss.demo.HelloOSS.main(HelloOSS.java:77)
        Caused by: java.lang.ClassNotFoundException: org.apache.http.ssl.TrustStrategy
            at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
            ... 3 more

    가방 의존 에 문제 가 생 겼 기 때 문 입 니 다. 아 리 클 라 우 드 의 oss SDK 는 apache httpclient 4.4.1 을 인 용 했 고 제 프로젝트 에 도 도입 되 었 지만 버 전이 다 르 기 때문에 문제 가 생 겼 습 니 다.프로젝트 디 렉 터 리 에서 "mvn dependency: tree" 를 실행 할 수 있 습 니 다. 상호 의존 Spring学习笔记(二十一):使用阿里云OSS的javaSDK时遇到的问题(附:测试代码)_第1张图片 다음은 가방 의존 을 해결 하 는 두 가지 방법 입 니 다.
  • 통 일 된 버 전 을 사용한다.프로젝트 에서 아파 치 httpclient 4.4.1 과 충돌 하 는 버 전 을 사용한다 면 4.4.1 버 전 을 사용 하 십시오.pom. xml 에서 다른 버 전의 Apache httpclient 의존 도 를 제거 합 니 다.프로젝트 가 comons - httpclient 를 사용 했다 면 충돌 이 있 을 수 있 습 니 다. comons - httpclient 를 제거 하 십시오.
  • 의존 충돌 해소.프로젝트 가 여러 제3자 패키지 에 의존 하고 제3자 패키지 가 다른 버 전의 아파 치 httpclient 에 의존한다 면 프로젝트 에 의존 충돌 이 있 을 수 있 습 니 다. exclusion 을 사용 하여 해제 하 십시오.자세 한 내용 은 Maven guides 를 참고 하 세 요.

  • 제 프로젝트 에 httpclient 4.3.6 을 사 용 했 습 니 다. 코드 는 다음 과 같 습 니 다. 첫 번 째 방법 으로 버 전 을 4.4.1 로 올 릴 수 밖 에 없습니다.두 번 째 로 아 리 클 라 우 드 SDK 에서 의존 하 는 httpclient 를 제거 하면 잘못된 것 입 니 다. 제 프로젝트 의 httpclient 버 전이 낮 기 때 문 입 니 다.
    
            <dependency>  
                <groupId>org.apache.httpcomponentsgroupId>  
                <artifactId>httpcoreartifactId>    
                <version>4.3.3version> 
            dependency>
              <dependency>  
                <groupId>org.apache.httpcomponentsgroupId>  
                <artifactId>httpclientartifactId>  
                <version>4.3.6version>  
            dependency>
    
            <dependency>  
                <groupId>org.apache.httpcomponentsgroupId>  
                <artifactId>httpclient-cacheartifactId>  
                <version>4.3.6version>  
            dependency>  
            <dependency>  
                <groupId>org.apache.httpcomponentsgroupId>  
                <artifactId>httpmimeartifactId>  
                <version>4.3.6version>  
            dependency>
            

    다음은 테스트 코드:
        public static void main(String[] args)
        {
            // endpoint     ,  region        
            String endpoint = "http://oss-cn-beijing.aliyuncs.com";
            // accessKey   https://ak-console.aliyun.com/#/  
            String accessKeyId = "*****************";
            String accessKeySecret = "********************";
            //   OSSClient  
            OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);
            //        :user.dir            ,     user.dir    ;    Linux    ,     /java/apache-tomcat-8.0.24/bin/,     
            String dir = System.getProperty("user.dir");
            System.out.println(dir);
            //    
            client.putObject("jalon-test", "1.jpg", new File("E:\\1.jpg"));
            //    
            client.getObject(new GetObjectRequest("jalon-test","1.jpg"),new File(dir+"\\1.jpg"));
        }

    다음은 실행 결과: E: \ SVNWorkSpace\shoes_src, 그리고 1. jpg 는 oss 에 성공 적 으로 업로드 되 었 고 프로젝트 루트 디 렉 터 리 에 다운로드 되 었 습 니 다.

    좋은 웹페이지 즐겨찾기