Я занимаюсь разработкой приложения 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, и она отлично работает при использовании системы модулей.
Я пытался решить это , это и это проблемы, но ни одно из предоставленных решений не помогло мне.
Спасибо за помощь!