AS 2.3.3,Gradle 3.3,Java 1.8无法解析java.time.format.DateTimeFormatter的导入;

时间:2017-09-07 17:15:07

标签: java android android-studio gradle import

我想安全地做日期和时间,所以我按照几条SO建议说使用DateTimeFormatter,所以我粘贴了3行:

LocalDate date = LocalDate.now();
String text = date.format(formatter);
LocalDate parsedDate = LocalDate.parse(text, formatter);

毫不奇怪,我得到Cannot resolve symbol...几乎所有东西。去过也做过。将光标放在错误例程上并点击Alt+Enter,将生成正确的import

但这没有发生。

所以我在另一个示例代码片段中插入了这两行:

import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

Error: `Cannot resolve symbol LocalTime` and `DateTimeFormatter`

我的问题是:我该怎么做才能解决导致错误的符号。

我会继续。我提交的内容更多,因为通常在我打算提交问题时,我会在解释我打算提交的内容时弄清楚自己的答案。

不是这个时候。

(为什么我有

C:\Users\Dov\AppData\Local\Android\sdk

C:\Users\Dov\AppData\Local\Android\sdk1

我为SDK管理器选择的并不重要。它说两者都是最新的。

{我知道这会令人尴尬。我这样做太久了(也许我应该停在这里)因为这会让我退缩。 }

我已查看Use embedded jdk

我看着我能想到的每一个场景。

我用Google搜索了错误信息。

我已完成Clean(无错误)和Build

import static...一无所获。

我正在使用Java 8, version 51, Android Studio 2.3.3, gradle-3.3

Gradle控制台说:

C:\Users\Dov\Google Drive\AndroidStudioProjects\WordyHelperton - Copy - Copy
  \app\src\main\java\com\dslomer64\servyhelperton\Utilities.

java:9: error: package java.time.format does not exist

C:\Users\Dov\Google Drive\AndroidStudioProjects\WordyHelperton - Copy - Copy
  \app\src\main\java\com\dslomer64\servyhelperton\Utilities.

java:321: error: cannot find symbol

我有这个:

enter image description here

而且:

package java.time.format;

public final class DateTimeFormatter {
  private final java.time.format.DateTimeFormatterBuilder.CompositePrinterParser printerParser;
  private final java.util.Locale locale;
  private final java.time.format.DecimalStyle decimalStyle;
  private final java.time.format.ResolverStyle resolverStyle;
  private final java.util.Set<java.time.temporal.TemporalField> resolverFields;
  private final java.time.chrono.Chronology chrono;
  private final java.time.ZoneId zone;
  public static final java.time.format.DateTimeFormatter ISO_LOCAL_DATE;
  ...

2 个答案:

答案 0 :(得分:1)

使用Android时,您使用的是Android SDK,而不是直接使用JDK。并且支持API级别26中添加的Android SDK LocalTimeDateTimeFormatter

即使您尝试直接通过JDK8访问这些内容,截至2017年9月8日,Android Studio尚未支持所有Java 8功能。即使使用即将推出的3.0预览版1,您也只能获得对Java 8 API的支持以及minsdkversion依赖性限制的支持,如下所示。

enter image description here

来源:Supported Java 8 Language Features and APIs

因此,由于尚未提及java.time.* API,尝试通过JDK8导入它不会像Android Studio 3.0 Preview 1那样起作用。

答案 1 :(得分:0)

LocalTime和LocalDate是java 1.8的新增功能。看起来你正在使用1.7或更早版本。您需要将JDK更新为java 1.8