Что я пытаюсь сделать
Я кодирую мидлет J2ME и хочу использовать JSR-75 для записи файлов. Я также хочу иметь возможность запускать свое приложение на устройстве, которое не поддерживает JSR-75.
Как я это делаю
Я нашел веб-сайт, на котором объясняется, как это сделать (забыл URL-адрес, извините):
- Создайте общедоступный абстрактный класс («Сервис»), который предоставляет все функциональные возможности.
- Создайте частный класс пакета («ServiceImplementation»), расширяющий этот абстрактный класс, реализующий все функции.
- Поместите оба в отдельный пакет, визуализируя Service фасад для пакета.
Для создания экземпляра этого класса используется следующий метод абстрактного класса:
public static Service getInstance() {
try {
Class.forName("javax.microedition.io.file.FileConnection");
Class c = Class.forName("my.package.Service");
Service service = (Service) (c.newInstance());
return service;
} catch (Exception e) {
return null;
}
}
Что пошло не так
Это отлично работает, когда присутствует JSR-75. Проблема в том, что я хочу, чтобы этот мидлет запускался и на устройствах, отличных от JSR-75, и этот код выдает исключение ClassNotFoundException: javax / microedition / io / file / FileConnection, когда я пытаюсь это сделать, хотя я улавливаю все исключения .
Я провел поиск по всему проекту, чтобы убедиться, что я не использую FileConnection где-либо еще, кроме Service и ServiceImplementation.
Кто-нибудь знает, как я должен это делать?