Ошибка JClouds: ключ [rackspace-cloudservers-uk] отсутствует в списке провайдеров или API при использовании Shaded Jar

У меня есть проект весенней загрузки, в который я пытаюсь интегрировать JClouds, чтобы загружать файлы в Rackspace Cloud. В предыдущем вопросе я обнаружил, что jclouds на самом деле не работает с последней версией Spring из-за конфликта или чего-то еще с Gson. Apache jclouds java.lang.NoSuchMethodError, когда использование Rackspace в приложении Spring Boot

Чтобы обойти это, как было предложено, я попытался создать затененную банку, содержащую как jclouds, так и gson, а затем поместил ее в свой проект Spring Boot.

В моем проекте 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]

Я не знаю, проблема ли это в моем проекте или в затененной банке, которую я создал. Вот POM, который я использовал для создания файла jar.

<?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>

person SheppardDigital    schedule 02.11.2016    source источник


Ответы (1)


Вам необходимо настроить ServicesResourceTransformer. в плагине maven shadow, чтобы убедиться, что файлы загрузчика служб из всех банок объединены в один.

person Ignasi Barrera    schedule 02.11.2016