Подмножество Java поддерживается кодовым именем One

В моем новом приложении Codename One я получил несколько ошибок сборки:

Сборка жалуется на класс FileNotfoundException и метод String split(). Есть идеи почему?

xxx\Page.java:11: error: cannot find symbol
import java.io.FileNotFoundException;
  symbol:   class FileNotFoundException
  location: package java.io

а также

xxx\Page.java:97: error: cannot find symbol
            final String[] parts = number_label.split("-");
  symbol:   method split(String)
  location: variable number_label of type String

Кстати, это правда, что есть ограничение на использование Java 1.5 в CodenameOne? Я не мог найти, где сказать, чтобы скомпилировать с Java 7.

С уважением,

1 ответ

РЕДАКТИРОВАТЬ: Этот ответ несколько устарел. Codename One теперь поддерживает подмножество Java 8, хотя string.split() все еще проблематичный вызов API.

Codename One поддерживает подмножество Java 5, вы не должны пытаться изменить его, поскольку код трансляции сервера зависит от поведения байт-кода целевой Java 5 и поддерживает только очень специфическое подмножество API.

Аргументация проста, так как Codename One имеет несколько реализаций виртуальных машин (iOS, Dalvik / ART, XMLVM / ParparVM, blackberry и т. Д.), Очень сложно тестировать новые вещи (например, новые байт-коды) и очень сложно добавлять новые API в пути. это будет полностью кросс-платформенный. Ты можешь использовать StringUtils.split() реализовать эту функцию, а также StringTokenizer,

Ограничение API также позволяет нам сохранять исполняемый файл эффективным и небольшим (относительно). По сравнению с более полнофункциональной виртуальной машиной мы по меньшей мере в 5 раз меньше в производстве. Это большое дело для мобильных приложений...

Мы работаем над объединением различных виртуальных машин на стороне сервера, что позволит нам в будущем легко добавлять основные API виртуальных машин, а также такие функции, как поддержка Java 8.

Вы можете узнать больше в этом ответе: Как работает Codename One?

Другие вопросы по тегам