EventType "ADD_SENSOR" с родительским "EVENT" уже существует - PullRequest
1 голос
/ 07 марта 2019

Я занимаюсь разработкой приложения JavaFX, в котором используется платформа Apache Felix OSGi. У меня проблема с запуском пользовательских событий. Всякий раз, когда я пытаюсь запустить пользовательское событие, генерируется исключение java.lang.IllegalArgumentException: EventType "ADD_SENSOR" with parent "EVENT" already exists (трассировка стека показана ниже).

Caused by: java.lang.IllegalArgumentException: EventType "ADD_SENSOR"with parent "EVENT" already exists
    at javafx.event.EventType.register(EventType.java:186)
    at javafx.event.EventType.<init>(EventType.java:128)
    at swt6.componentmanager.gui.event.AddSensorEvent.<clinit>(AddSensorEvent.java:8)

Код запуска события показан ниже.

private void onAddSensor(ActionEvent event) {
    AddSensorEvent addSensorEvent = new AddSensorEvent(
            this.typeComboBox.getValue(),
            this.nameInput.getText(),
            this.descriptionInput.getText()
    );
    this.addButton.fireEvent(addSensorEvent);

    // close the window
    ((Stage) this.getScene().getWindow()).close();
}

Класс AddSensorEvent, который также управляет экземпляром EventType через поле public static final, также показан ниже.

public class AddSensorEvent extends Event {
    public static final EventType<AddSensorEvent> ADD_SENSOR_EVENT_TYPE =
            new EventType<>(EventType.ROOT, "ADD_SENSOR");

    private final SensorFactory sensorFactory;
    private final String sensorName;
    private final String sensorDescription;

    public AddSensorEvent(SensorFactory sensorFactory, String sensorName, String sensorDescription) {
        super(ADD_SENSOR_EVENT_TYPE);

        this.sensorFactory = sensorFactory;
        this.sensorName = sensorName;
        this.sensorDescription = sensorDescription;
    }

    public SensorFactory getSensorFactory() {
        return this.sensorFactory;
    }

    public String getSensorName() {
        return this.sensorName;
    }

    public String getSensorDescription() {
        return this.sensorDescription;
    }
}

Приложение является портом приложения, использующего систему модулей Java, которая была представлена ​​в Java 9, и она отлично работает при использовании системы модулей.

Я пытался решить это , это и это проблемы, но ни одно из предоставленных решений не помогло мне.

Спасибо за помощь!

...