Что я пытаюсь сделать
Я кодирую мидлет J2ME и хочу использовать JSR-75 для записи файлов. Я также хочу иметь возможность запускать мое приложение на устройстве, которое не поддерживает JSR-75.
Как я это делаю
Я нашел сайт, который объясняет, как это сделать (забыл URL, извините):
- Создайте открытый абстрактный класс («Сервис»), который предоставляет все функциональные возможности.
- Создать закрытый для пакета класс («ServiceImplementation»), расширяющий этот абстрактный класс и реализующий все функциональные возможности.
- Поместите оба в отдельный пакет, оказывая услуги по оформлению фасада для пакета.
Для создания экземпляра этого класса используется следующий метод из абстрактного класса:
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.
Кто-нибудь знает, как я должен это сделать?