Java 8 и время Java

Я знаю, что библиотека Java по умолчанию для Codename One теперь является Java 8, и я также компилирую локально с помощью Java 8.

Я пытаюсь использовать новый API java.time добавлен в Java 8 (Учебник). Я вижу следующую ошибку во время компиляции:

: ошибка: пакет java.time не существует

Классы java.time не включены в порт Codename One для Java 8? Должен ли я вместо этого использовать более старую дату Java? Я не уверен, что я что-то упустил.


person 3lix    schedule 07.09.2016    source источник
comment
Вероятно, вы используете IDE с режимом совместимости для работы с более ранней версией JDK. Вы должны отключить его.   -  person Elrond_EGLDer    schedule 07.09.2016
comment
compiling locally -- используя javac из командной строки или из IDE ?   -  person VinayVeluri    schedule 07.09.2016
comment
Я не знаком с Codename One. Но я могу сказать, что фреймворк java.time является частью Java 8 Standard Edition. Поэтому каждая реализация Java SE должна включать эти классы. Безусловно присутствует в реализации Oracle и реализация OpenJDK.   -  person Basil Bourque    schedule 07.09.2016
comment
javac -version прольет свет, но это должен быть более старый JDK   -  person Joop Eggen    schedule 07.09.2016
comment
Ключевое слово для Codename One — это подмножество Java 8. Если мы включим всю Java 8, размер одного rt.jar составит 63 МБ. Поскольку нативная компиляция обычно увеличивает размер в 8 раз, это будет проблемой даже с оптимизацией... Лучшие попытки, которые мы видели для полной поддержки JDK, закончились 50-мегабайтным hello world. Мы производим бинарные файлы размером 3 МБ. Сказав, что я хотел бы, чтобы кто-нибудь упаковал это в cn1lib: github.com/ThreeTen/threetenbp   -  person Shai Almog    schedule 08.09.2016


Ответы (2)


Codename One включает подмножество классов Java 1.8. Я не думаю, что классы Java Time включены, CN1 имеет свои собственные классы, которые являются подмножеством более ранней версии Java (возможно, 1.5, я не помню).

Javadocs для всех классов CN1 находятся здесь: https://www.codenameone.com/javadoc/index.html

person James H    schedule 07.09.2016

Быстрая проверка javadoc показывает: да, java8 включает пакет java.time.

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

Типичная вещь, которая происходит с eclipse: вы установили уровень «совместимости компилятора» на 1.8, но в настройке пути сборки для вашего проекта вы не указываете на JRE 1.8, но, возможно, на 1.7 один.

Таким образом, ответ таков: проверка с помощью JDK/JRE используется в вашей установке для определения доступных библиотек. Таким образом, даже если вы не видите ошибок компилятора для синтаксиса Java8... при указании неправильных библиотек JRE/JDK все равно не будет работать.

person GhostCat    schedule 07.09.2016