У меня есть некоторый код 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);
}
}