Ошибка компиляции Java - только с Ubuntu + openjdk - PullRequest
1 голос
/ 03 апреля 2019

У меня есть некоторый код Java, который компилируется на моем Mac, но не компилируется на моей машине с Ubuntu. В частности, при использовании статического of метода List я получаю ошибку:

error: cannot find symbol
        List<String> list2 = List.of("cat", "dog");
                                 ^
  symbol:   method of(String,String)
  location: interface List
1 error

Я подумал, что, возможно, это проблема с версией Java. Конечно, он использовал только Java 8. Однако впоследствии я модернизировал свой компьютер с Ubuntu для использования Java 11 с использованием OpenJDK, но у меня все еще возникает та же проблема.

Вывод, полученный при запуске java -version на машине с Ubuntu:

openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment (build 11.0.1+13-Ubuntu-3ubuntu116.04ppa1)
OpenJDK 64-Bit Server VM (build 11.0.1+13-Ubuntu-3ubuntu116.04ppa1, mixed mode, sharing)

Вывод, полученный при запуске java -version на компьютере Mac:

java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)

Для компиляции я использую Gradle версии 5.2.1. Я использую оболочку Gradle, поэтому обе машины используют одну и ту же версию Gradle.

Вот файл, который не компилируется должным образом.

package mypackage;

import java.util.List;
import java.util.ArrayList;

public class App {

    public static void main(String[] args) {
        // No errors on both MacOS and Ubuntu
        List<String> list1 = new ArrayList<>();
        list1.add("cat");
        System.out.println(list1);

        // Fails to compile on Ubuntu
        List<String> list2 = List.of("cat", "dog");
        System.out.println(list2);
    }
}

1 Ответ

1 голос
/ 03 апреля 2019

List.of() была введена в Java 9. Это означает, что ваше обновление с Java 8 до Java 11 не было успешным.

Запустите ./gradlew -v, чтобы увидеть, какая версия Java разрешена Gradle:

------------------------------------------------------------
Gradle 5.3.1
------------------------------------------------------------

Build time:   2019-03-28 09:09:23 UTC
Revision:     f2fae6ba563cfb772c8bc35d31e43c59a5b620c3

Kotlin:       1.3.21
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM:          11.0.2 (Oracle Corporation 11.0.2+9)
OS:           Linux 4.15.0-47-generic amd64

Убедитесь, что вы не используете демон Gradle, запущенный на Java 8, перед обновлением до Java 11 и в build.gradle принудительная совместимость с Java 11:

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...