Я хотел проверить некоторые новые функции java 11, которые были выпущены два дня назад. В JEP 330 указано, что я могу запустить Java-Source-Code-Program без компиляции. Он также должен поддерживать использование файлов Shebang-Files.
Поэтому я написал эту небольшую программу Hello-World Test.java
:
#!/opt/java/jdk-11/bin/java --source 11
public class Test
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
Я загрузил JDK 11 и извлек его в /opt/java
. Следовательно, сам Шебанг работает. Т.е. выполнение /opt/java/jdk-11/bin/java --version
дает мне
openjdk 11 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
После выполнения Test.java
исполняемого файла (используя chmod +x Test.java
) выполнение не выполняется. Т.е. ./Test.java
дает мне:
./Test.java:1: error: illegal character: '#'
#!/opt/java/jdk-11/bin/java --source 11
^
./Test.java:1: error: class, interface, or enum expected
#!/opt/java/jdk-11/bin/java --source 11
^
2 errors
error: compilation failed
Как только я Test.java
Shebang-Line из Test.java
и запускаю его с помощью /opt/java/jdk-11/bin/java --source 11 Test.java
все работает как шарм, и я получаю ожидаемый результат: Hello World!
Моя машина работает Ubuntu 17.04
. Я связал javac
с тем из JDK 11 (т. javac -version
Выполнение javac -version
дает javac 11
).