Не удалось выполнить цель org.codehaus.mojo: exec-maven-plugin: 1.2.1: exec (default-cli) в проекте SpringData

Рефакторинг кода

Чтобы понять, что не так с этим кодом, мы в первую очередь переходим к рефакторингу:

Класс для моделирования ожидаемых сообщений

Настроить этот класс необходимо для симуляции среднего сообщения от вашего Kafka.

class Message:
    """Class to simulate expected Kafka message."""
    def __init__(self):
        self.value = "10,20,30,40".encode()

Генератор случайных сообщений

Настройте этот генератор для имитации правдоподобного сообщения от Kafka.

import random
import time

def message_generator(n):
    """Yield a generated Kafka message."""
    for i in range(n):
        time.sleep(random.uniform(0, 0.001))
        yield Message()

Рефакторизованный код

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

import numpy as np
my_array, sums = np.empty((0, 4)), np.empty((1))
STEP = 60
MESSAGES = 100000   
MAX_MEAN = 219000 

for i, message in enumerate(message_generator(MESSAGES)):
    values = np.array(message.value.decode("utf-8").split(',')).astype(float)
    my_array = np.vstack([my_array, values])
    if i % STEP == 0 and i > STEP:
        sums = np.append(sums, np.sum(my_array[i - STEP:i, 3]))
        l = np.arange(0, len(sums), 24)
        if np.mean(sums[l]) >= MAX_MEAN:
            print("Large ortalama")

Обозначение кода

Развенчание вашего утверждения о том, что любая проблема с np.arange

Теперь , ваш код создает список l значений, от 0 до len(sums), с шагом 24. Нет ничего плохого в np.arange.

Что делает ваш код

У вас есть массив sums, к которому вы добавляете каждые 60 итераций сумму последних 60 итераций третий столбец вашего массива my_array.

Затем вы переходите к генерации l, а затем создаете среднее значение из значений sums с индексами из l. Это зависит только от получаемых вами сообщений.

Когда такое значение больше или равно заданному MAX_MEAN, вы печатаете сообщение.

Репликация ядра

Предположим, что сумма каждого окна является константой constant_sum. Назовем множество этих констант elements. Очевидно, что ваше среднее значение ortalama равно constant_sum.

Как вы можете видеть, elements_step упрощается от функции и рассматривается только в функции входных сообщений.

elements = np.array([])
elements_step = 5
constant_sum = 1000
upper_limit = 10000
for i in range(1000):
    elements = np.append(elements, constant_sum)
    l = np.arange(0, len(elements), elements_step)
    ortalama = np.mean(elements[l])
    if ortalama >= upper_limit:
        print("Large ortalama")
2
задан JoSeBu 20 January 2019 в 10:21
поделиться

2 ответа

В вашем контексте приложения отсутствует ссылка на схему JPA.

В этой строке указано местоположение проблемы:

Строка 14 в документе XML из ресурса пути к классу [applicationContext.xml] недопустима; вложенным исключением является org.xml.sax.SAXParseException; номер строки: 14; номер столбца: 43; El prefijo "jpa" para el elemento "jpa: repositories" no está enlazado.

И решение состоит в том, чтобы правильно ссылаться на схему jpa:

<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    ...
    xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
            http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.8.xsd
            ...
            >

Обратите внимание, что ваш context.xml пропускает часть xmlns:jpa.

0
ответ дан Gergely Bacso 20 January 2019 в 10:21
поделиться

Попробуйте упорядочить файлы, используя Maven Standard Directory Layout :

src/
  main/
    java/
      (put your .java files here)
    resources/
      applicationContext.xml

Посмотрите на скомпилированные источники (папку target или файл .jar - обратите внимание, что вы можете открыть последний с помощью ZIP-совместимого архиватора (например, 7-ZIP) и убедиться, что ваш applicationContext.xml действительно отсутствует, прежде чем изменять структуру папок и присутствует после его применения и компиляции проекта.

Обновление для читателей этого ответа: автор менял вопрос несколько раз. Каждый раз после исправления предыдущей ошибки сообщалось о совершенно новой ошибке. Этот ответ был одним из шагов в этом путешествии, он позволил системе фактически найти applicationContext.xml во время выполнения.

0
ответ дан Hero Wanders 20 January 2019 в 10:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: