проблема инициализации контекста приложения репозитория API alfresco версии 6.X или 7.X

Когда я хочу инициализировать контекст приложения репозитория Alfresco версии 6.X или 7.X (я протестировал последнюю версию 7.78 и версию 6.57), у меня возникают следующие ошибки:

Проблема конфигурации: не удалось импортировать определения bean-компонентов из местоположения URL [classpath:alfresco/application-context-core.xml]

Оскорбительный ресурс: ресурс пути к классу [alfresco/application-context.xml]; вложенным исключением является org.springframework.beans.factory.parsing.BeanDefinitionParsingException: проблема с конфигурацией: не удалось импортировать определения компонентов из URL-адреса [classpath:alfresco/core-services-context.xml]

Оскорбительный ресурс: ресурс пути к классу [alfresco/application-context-core.xml]; вложенным исключением является org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: строка 587 в XML-документе из ресурса пути к классу [alfresco/core-services-context.xml] недействительна; вложенным исключением является org.xml.sax.SAXParseException; номер строки: 587; номер столбца: 107; cvc-datatype-valid.1.2.1: 'cm:constraintRegistry' не является допустимым значением для 'NCName'.

Мой код очень прост:

public class AlfrescoApp {

    public static void main(String[] args) {

        try {
            ServiceRegistry serviceRegistry = null;
            ApplicationContext context = null;
            context = new ClassPathXmlApplicationContext("alfresco/application-context.xml");

            serviceRegistry = (ServiceRegistry) context.getBean(ServiceRegistry.SERVICE_REGISTRY);
            AuthenticationUtil.setAdminUserAsFullyAuthenticatedUser();

            NodeService nodeService = serviceRegistry.getNodeService();

        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }

}

и это содержимое моего файла POM.xml:

    <?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>com.alfresco.project</groupId>
    <artifactId>white_box_project_alfresco</artifactId>
      <packaging>jar</packaging>
      <version>1.0-SNAPSHOT</version>

  <dependencies>
        <dependency>
               <groupId>org.alfresco</groupId>
              <artifactId>alfresco-repository</artifactId>
              <version>7.78</version>
        </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.32</version>
            </dependency>          

            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>4.1.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>4.1.0.RELEASE</version>
            </dependency>

             <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.1.0.RELEASE</version>
            </dependency>
           <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>4.1.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>4.1.0.RELEASE</version>
            </dependency>
           <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-expression</artifactId>
                <version>4.1.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>3.2.14.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>4.1.0.RELEASE</version>
            </dependency>

            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
                <version>2.5</version>
            </dependency>
  </dependencies>

    <build>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>Cp1252</encoding>
                </configuration>
            </plugin>
        </plugins>

    </build>

<repositories>
        <repository>
            <id>alfresco-public</id>
            <url>https://artifacts.alfresco.com/nexus/content/repositories/public/</url>
        </repository>
    <repository>
      <id>jboss-public-repository-group</id>
      <name>JBoss Public Repository Group</name>
      <url>http://repository.jboss.org/nexus/content/groups/public/</url>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
      <snapshots>
        <updatePolicy>daily</updatePolicy>
      </snapshots>
    </repository>
  </repositories>

</project>

Я не знаю, почему у меня есть эти ошибки с этим кодом выше. Пожалуйста, не могли бы вы помочь мне решить эту проблему?


person Compiii    schedule 07.07.2019    source источник


Ответы (1)


Проблема в том, что вы перепутали разные версии jar-файлов Spring framework в вашем pom.xml. Чтобы исправить это, просто удалите все ненужные зависимости из вашего pom.xml и не используйте старые версии Spring, такие как версия 2.5 «все в одном».

Старые версии Spring, похоже, не допускают ":" в идентификаторах компонентов (тип NCName запрещает это, если быть точным). Это случай одного из bean-компонентов, определенных внутри "alfresco/core-services-context.xml", который упоминается в предоставленном вами выводе ошибок:

<bean id="cm:constraintRegistry" class="org.alfresco.repo.dictionary.constraint.ConstraintRegistry" />

Если вы посмотрите на pom.xml файла alfresco-repository-7.78.jar, вы увидите, что он основан на версии Spring 5.1.8.RELEASE — во избежание проблем попробуйте использовать ту же версию в своем проекте.

person Petr Bodnár    schedule 14.11.2019