2016-11-02 16 views
0

JClouds를 통합하려고하는 스프링 부트 프로젝트가 있으므로 Rackspace 클라우드에 파일을 업로드 할 수 있습니다. . 이전 질문에서 jclouds는 Gson과의 충돌이나 무언가로 인해 Spring의 최신 버전에서 실제로 작동하지 않는다는 것을 알게되었습니다. Apache jclouds java.lang.NoSuchMethodError when using Rackspace in a Spring Boot applicationJClouds 오류 : 음영 처리 된 Jar 사용시 키 [rackspace-cloudservers-uk]가 없음

이 문제를 해결하기 위해 jclouds와 gson이 모두 포함 된 음영 처리 된 jar 파일을 만들려고했는데이를 스프링 부트 프로젝트에 넣었습니다.

My Spring Boot 프로젝트는 Embed Tomcat을 사용하고 있으며 InteliJ를 사용하고 있습니다. jclouds의 클래스 이름 등은 InteliJ에서 확인되었지만 응용 프로그램을 실행하려고하면 오류가 발생합니다.

Caused by: java.util.NoSuchElementException: key [cloudfiles-uk not in the list of providers or apis: {providers=[aws-cloudwatch], apis=[rackspace-cloudidentity]} 
    at org.jclouds.ContextBuilder.newBuilder(ContextBuilder.java:173) ~[jclouds-shaded-1.0-SNAPSHOT.jar:na] 

내가 만든 프로젝트 또는 음영 처리 된 jar에 문제가 있는지 알 수 없습니다. jar 파일을 만드는 데 사용한 POM은 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>digital.sheppard</groupId> 
    <artifactId>jclouds-shaded</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <dependencies> 
     <dependency> 
      <groupId>com.google.code.gson</groupId> 
      <artifactId>gson</artifactId> 
      <version>2.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.jclouds</groupId> 
      <artifactId>jclouds-all</artifactId> 
      <version>1.9.2</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-shade-plugin</artifactId> 
       <version>2.4.3</version> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>shade</goal> 
         </goals> 
         <configuration> 
          <relocations> 
           <relocation> 
            <pattern>com.google.code.gson</pattern> 
            <shadedPattern>com.shaded.code.gson</shadedPattern> 
           </relocation> 
          </relocations> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

답변

1

당신은 모든 단지에서 확인 서비스 로더 파일을 하나 하나에 병합하기 위해, 받는다는 그늘 플러그인의 ServicesResourceTransformer을 구성해야합니다.

+0

이제 오류가 발생했습니다. – SheppardDigital