Olej писал(а): ↑21 ноя 2019, 01:27
Вот здесь:
Изменение идентификации браузера - выясняется (повторять не хочется, см. там), что в разных дистрибутивах Linux (Astar Linux SE) могут быть использованы сборки JDK, которые (при полной синтаксической совместимости) могут вести
к разному исполнению Java-кода.
В ходе тех обсуждений мне не раз укоряли
, что "там автор изначально тестировал приложение *.jar, а у тебя *.class".
Но это
технологические различия, и на них полезно бы остановиться ... себе на будущее для справки.
Приложение ua.java, простейшее:
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/User-Agent$ cat ua.java
import java.io.*;
import java.net.*;
public class ua {
public static String getHTML( String urlToRead ) throws Exception {
StringBuilder result = new StringBuilder();
URL url = new URL( urlToRead );
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod( "GET" );
BufferedReader rd = new BufferedReader( new InputStreamReader( conn.getInputStream() ) );
String line;
while( ( line = rd.readLine() ) != null ) {
result.append( line );
}
rd.close();
return result.toString();
}
public static void main( String[] args ) throws Exception {
System.out.println( getHTML( args[ 0 ] ) );
}
}
Собираем и исполняем так:
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/User-Agent$ javac ua.java
olej@ACER:~/2019_WORK/own.WORK/User-Agent$ ls -l *.class
-rw-r--r-- 1 olej olej 1260 ноя 18 14:15 ua.class
olej@ACER:~/2019_WORK/own.WORK/User-Agent$ java ua http://httpbin.org/user-agent
{ "user-agent": "Java/11.0.5"}
Собираем и исполняем по-другому, в архив *.jar (меня здесь интересовала именно сборка единичного файла без явного создания файла манифеста):
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/User-Agent$ jar --create --file ua.jar --main-class ua ua.class
olej@ACER:~/2019_WORK/own.WORK/User-Agent$ ls -l *.jar
-rw-r--r-- 1 olej olej 1158 ноя 20 18:44 ua.jar
olej@ACER:~/2019_WORK/own.WORK/User-Agent$ java -jar ua.jar http://httpbin.org/user-agent
{ "user-agent": "Java/11.0.5"}
Сборка в *.jar безусловно интереснее для многофайловых *.java проектов, которые подлежат переносу/тиражированию (на локальном хосте с тем же успехом выполняются и многофайловые *.class проекты).