Сканирование для классов непросто с чистой 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
}
Этот метод имеет дополнительное преимущество использования анализатора байт-кода для поиска кандидатов, что означает, что он будет не загружает все классы, которые он сканирует.
Мне удалось воспроизвести эту ошибку с помощью модуля привязок.
Кажется, что есть много проблем с электронным каркасом, которые могут вызвать такое поведение.
Вы сами ответили на это, отредактировав исходный вопрос, но ради полного ответа я включаю и это
[119 ] Я просто запускаю файл setup.exe в своей папке win-unpacked, и все идет гладко. Теперь, когда я перемещаю распакованную папку win в другой каталог, мое приложение работает нормально, но когда оно запускает процесс разархивирования, оно выдает ошибку.blockquote>
Это имеет интересную причину. Поскольку ваш каталог dist (место назначения сборки вашего проекта) находится внутри вашего рабочего проекта, модуль привязок предполагает, что ваш рабочий каталог является корневым каталогом вашего [ 1118] встроенное приложение . Таким образом, он может определить путь к вашему модулю, и все работает нормально. Как только ваше встроенное приложение помещается в другое место, модуль привязок не может найти корневой каталог вашего приложения и выдает ошибку, с которой вы связались.
Проблема 'file: //'
Другая проблема модуля связываний - обработка путей с помощью протокола 'file'.
Кто-то уже пошел вперед и создал проблему (+ запрос на извлечение) для этой проблемы, поэтому вы могли бы изменить локальную установку этого модуля, даже если я не рекомендую принимать такие действия.
Мой личный совет:
Текущее состояние модуля привязок делает его непривлекательным для использования вместе с платформой Electron. Я слышал, что у него даже есть проблемы с правильной обработкой умлаутов, поэтому в вашей конкретной ситуации лучше всего избавиться от них. Вы можете создать небольшой локальный модуль, который обернет ваш двоичный файл .node и сделает его столь же простым, как и все остальные ваши узлы.