Java 8和Java时间

3

我知道Codename One的默认Java库现在是Java 8,我也在本地使用Java 8进行编译。

我正在尝试使用Java 8中新增的java.time APITutorial)。但我在编译时看到以下错误:

: 错误:包java.time不存在

Codename One的Java 8端口中是否不包括java.time类?我应该使用旧的Java日期吗?我不确定是否遗漏了什么。


你可能正在使用一种具有“兼容模式”的IDE,以便适用于较低版本的JDK。你应该将其禁用。 - ROMANIA_engineer
本地编译 - 从命令提示符或IDE中使用javac? - Vinay Veluri
我不熟悉Codename One。但是我可以说,java.time框架是Java 8标准版的一部分。因此,每个Java SE的实现都必须包括这些类。当然,Oracle实现OpenJDK实现都一定会包含这些类。 - Basil Bourque
javac -version会提供一些信息,但必须使用旧版JDK。 - Joop Eggen
1
Codename One的关键词是"Java 8的子集"。如果我们包含整个Java 8,仅rt.jar就有63MB。由于本地编译通常会使大小增加8倍,即使进行了优化,这也会成为一个问题...我们看到的对完整JDK支持的最好尝试最终只有50MB的hello world。我们生成的二进制文件只有3MB。话虽如此,我希望有人能将其打包成cn1lib:https://github.com/ThreeTen/threetenbp/ - Shai Almog
2个回答

4

Codename One包括Java 1.8类的一个子集。我不认为包含Java Time类,CN1有自己的类,它是早期Java版本的子集(可能是1.5,我不记得了)。

CN1的所有类的Javadocs在这里:https://www.codenameone.com/javadoc/index.html


0

javadoc上进行快速检查可以得知:是的,java8包含了一个java.time包。

因此,您设置中的错误只能源于设置中的某种配置错误。

在eclipse中经常出现的一件事是:您已将“编译器兼容性”级别设置为1.8,但在项目的构建路径设置中,您可能没有指定1.8 JRE,而是指向了1.7 JRE。

因此,答案是:检查使用的JDK/JRE,以确定可用的库。因此,即使Java8语法没有编译器错误...当指向错误的JRE/JDK库时,仍然无法正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接