Электронное приложение Ошибка при перемещении папки сборки

Сканирование для классов непросто с чистой Java.

Spring framework предлагает класс под названием ClassPathScanningCandidateComponentProvider , который может делать то, что вам нужно. В следующем примере будут найдены все подклассы MyClass в пакете org.example.package

ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
provider.addIncludeFilter(new AssignableTypeFilter(MyClass.class));

// scan in org.example.package
Set components = provider.findCandidateComponents("org/example/package");
for (BeanDefinition component : components)
{
    Class cls = Class.forName(component.getBeanClassName());
    // use class cls found
}

Этот метод имеет дополнительное преимущество использования анализатора байт-кода для поиска кандидатов, что означает, что он будет не загружает все классы, которые он сканирует.

2
задан Matt.S 21 January 2019 в 08:56
поделиться

1 ответ

Мне удалось воспроизвести эту ошибку с помощью модуля привязок.

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

Проблема с «корневым каталогом»

Вы сами ответили на это, отредактировав исходный вопрос, но ради полного ответа я включаю и это

[119 ] Я просто запускаю файл setup.exe в своей папке win-unpacked, и все идет гладко. Теперь, когда я перемещаю распакованную папку win в другой каталог, мое приложение работает нормально, но когда оно запускает процесс разархивирования, оно выдает ошибку.

Это имеет интересную причину. Поскольку ваш каталог dist (место назначения сборки вашего проекта) находится внутри вашего рабочего проекта, модуль привязок предполагает, что ваш рабочий каталог является корневым каталогом вашего [ 1118] встроенное приложение . Таким образом, он может определить путь к вашему модулю, и все работает нормально. Как только ваше встроенное приложение помещается в другое место, модуль привязок не может найти корневой каталог вашего приложения и выдает ошибку, с которой вы связались.

Проблема 'file: //'

Другая проблема модуля связываний - обработка путей с помощью протокола 'file'.

Кто-то уже пошел вперед и создал проблему (+ запрос на извлечение) для этой проблемы, поэтому вы могли бы изменить локальную установку этого модуля, даже если я не рекомендую принимать такие действия.

Мой личный совет:

Текущее состояние модуля привязок делает его непривлекательным для использования вместе с платформой Electron. Я слышал, что у него даже есть проблемы с правильной обработкой умлаутов, поэтому в вашей конкретной ситуации лучше всего избавиться от них. Вы можете создать небольшой локальный модуль, который обернет ваш двоичный файл .node и сделает его столь же простым, как и все остальные ваши узлы.

Это удивительная статья о создании собственного модуля.

0
ответ дан Julian Z. 21 January 2019 в 08:56
поделиться
Другие вопросы по тегам:

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