Играя в Minecraft и вообще, пользуясь приложениями, написанными на Java Вы не раз могли столкнуться с ошибками (исключениями). В отличие от других языков программирования, Java жёстко заточена под использование ООП, потому при возникновении ошибки бросается исключение (объект содержащий сведения под ошибке). Его можно «поймать», дабы предпринять какие-то действия (допустим, вывести в лог). В случае майнкрафта, при возникновении исключения, создаётся краш-отчёт и работа игры завершается.
Понять исключения достаточно просто и вам для этого не понадобится специальное ПО для отладки.
Полная печать исключения состоит из 3-х частей:
- Исключение — имя класса ошибки. Классам обычно дают понятные человеку имена, достаточно знаний английского, чтобы понять значение.
- Сообщение — содержит более детальное описание ошибки. Может отсутствовать.
- Стек вызова — отражает ход работы программы (снизу вверх). Данная информация больше полезна разработчику, дабы понять, где именно возникла ошибка. Обычному пользователю данная информация может помочь понять, с чем связана ошибка (по именам классов и вызываемым функциям — методам).
Исключения могут иметь предков, что присутствует в данном примере (после «Caused by» идёт печать исключения-предка). Если вам не понятно исключение, возможно, стоит рассмотреть его предков — они могут содержать более понятное сообщение.
В данной теме я опишу наиболее часто встречающиеся ошибки, а также, какие действия следует или вовсе не следует предпринимать. Причин у ошибок множество и это не всегда повреждённые файлы игры (чего быть в принципе не может, поскольку лаунчер проверяет файлы игры).
При возникновении ошибок не спешите бежать переустанавливать Java и игру! Java — стабильный продукт. В большинстве случаев, ошибки возникают из-за неправильной настройки ОС; ошибок сети; неправильных драйверов.
org.lwjgl.LWJGLException: Pixel format not accelerated
Недоступно аппаратное ускорение графики. Описание ошибки (англ.)
Решение: Установите последнюю версию драйвера видеокарты.
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation/building failed
Не удаётся установить защищённое соединение из-за невозможности проверки SSL сертификата.
Что можно сделать:
- Эта ошибка может возникнуть из-за использования слишком старой версии Java. Рекомендуется регулярно обновлять ПО, чтобы иметь актуальный список корневых сертификатов.
- Виновником может быть антивирус, пытающийся «подсунуть» свой сертификат с целью прослушивания трафика. Настоятельно рекомендуется отключить в антивирусе проверку защищённых соединений (HTTPS/SSL/TLS) — это значительно снижает безопасность защищённых соединений и вызывает проблемы в работе приложений, использующие их.
java.net.SocketTimeOutException: Read timed out
Ошибка сети «время ожидания истекло». Здесь сложно установить виновника: проблема может быть как на стороне сервера, вашего провайдера или вызвана антивирусом.
Что можно сделать:
- Отключите антивирус и попробуйте выполнить запрос снова.
- Используйте другое подключение к интернету (другой провайдер; мобильный интернет; VPN; Wi-Fi соседей).
- Используйте VPN для обхода блокировки (цензуры) со стороны вашего интернет-провайдера.
java.net.ConnectException: Connection timed out: connect
Ошибка сети — не удалось установить соединение с хостом. Обычно виновником данной ошибки является Firewall (брандмауэр) или отсутствие интернета.
Что можно сделать:
- Проверьте наличие подключения к интернету.
- Временно отключите антивирус и Firewall.
java.net.SocketException: Connection reset / Удаленный хост принудительно разорвал существующее подключение
Ошибка сети «соединение сброшено». Как и в предыдущей ошибке, проблема связана с «плохим» интернетом, либо проблемами на стороне сервера (в этом случае ошибка будет у всех). Чаще всего возникает у пользователей мобильного интернета (USB-модем). От вас никаких действий предпринимать не требуется, кроме как найти «другой интернет» или использовать VPN для обхода фильтра сайтов.
java.lang.ClassCastException: XXX cannot be cast to YYY
Ошибка в логике программы: попытка привести объект к классу, экземпляром коего объект не является.
Решение: Сообщите о проблеме разработчику программы, приложив лог ошибки.
java.io.IOException: Server returned HTTP response code: 000 for URL
Проблема на стороне веб-сервера. Стандартная библиотека Java выбрасывает исключение, если веб-сервер выдаёт, например, страницу «404 Not Found».
Решение: Сообщите о проблеме владельцу веб-сервера, URL которого указан в тексте ошибки.
java.lang.UnsatisfiedLinkError: Can’t load library:
Не удалось загрузить нативную библиотеку (скорее всего, отсутствует файл по указанному пути).
Что можно сделать:
-
Чаще всего ошибка возникает из-за отсутствия библиотек LWJGL. Почему их файлы пропадают, пока остаётся загадкой. Если пути вы видите «.redserver/natives/2.9.1/lwjgl.dll», значит надо удалить папку natives, находящуюся в .redserver, чтобы лаунчер их скачал заново.
Неактуально: С версии 3.2 лаунчер проверяет наличие всех файлов и автоматически, при необходимости, перекачивает их.
java.lang.RuntimeException: Unknown character in
Синтаксическая ошибка в конфигурационном файле мода.
Что можно сделать:
- Удалите указанный в ошибке файл. Мод создаст новый с настройками по умолчанию.
- Если вам сложно удалить файл, можно сделать сброс конфигов через лаунчер. Нажмите в лаунчере на многоточие на кнопке «Играть»; выберите в меню пункт «Очистка клиента»; установите флажок возле «Сбросить конфигурацию» и запустите очистку.
- Выполните проверку диска на наличие ошибок. Испорченные файлы могут быть признаком неисправности диска.
java.lang.NullPointerException (NPE)
Ошибка в логике программы: попытка вызвать нестатичный метод, обратиться к полю несуществующего объекта — null.
Решение: Сообщите о проблеме разработчику программы, приложив лог ошибки.
java.net.UnknownHostException
Ошибка сети: не удаётся определить IP-адрес доменного имени (в общем, проблемы с DNS).
Что можно сделать:
- Иногда ошибка может возникать, если вы не подключены к интернету, либо же произошёл разрыв интернет-соединения. Обычно исчезает сама через небольшой промежуток времени после возобновления соединения. Если ошибка не исчезла — может помочь перезагрузка компьютера (сбрасывает кеш DNS).
- Доступ к ресурсу заблокирован вашим провайдером. Сейчас данная проблема актуальна для украинских пользователей: используемый нами Яндекс.DNS заблокирован в этой стране. Читайте, как обойти блокировку DNS.
java.io.EOFException: Unexpected end of ZLIB input stream
Неожиданный конец файла. В данном случае — ZIP-архива. Возникает например, когда вы пытаетесь распаковать недокачанный архив.
java.net.SocketException: Address family not supported by protocol family: connect
Проблема возникает из-за неправильной настройки протокола IPv6. Если таковой не поддерживается вашим интернет-провайдером, его поддержку следует отключить.
java.lang.OutOfMemoryError
А вот это как раз «любимая» ошибка про нехватку ОЗУ. Не стоит сразу спешить выставлять память в лаунчере на максимум, потому что дальнейшие действия зависят от сообщения к ошибке:
- Unable to create new native thread / Metaspace — в вашей системе закончились ресурсы (ОЗУ). Решается только путём завершения всех лишних программ, либо апгрейдом ПК (больше ОЗУ — больше программ можно запустить). Не забывайте, что следует использовать 64-разрядную систему.
- Java heap space — нехватка размера heap области памяти. Увеличьте лимит памяти в настройках лаунчера.
I have a Tomcat based web application. I am intermittently getting the following exception,
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:150)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:532)
at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:501)
at org.apache.coyote.http11.InternalInputBuffer$InputStreamInputBuffer.doRead(InternalInputBuffer.java:563)
at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:124)
at org.apache.coyote.http11.AbstractInputBuffer.doRead(AbstractInputBuffer.java:346)
at org.apache.coyote.Request.doRead(Request.java:422)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:290)
at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:431)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:315)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:200)
at java.nio.channels.Channels$ReadableByteChannelImpl.read(Channels.java:385)
Unfortunately I don’t have access to the client, so I am just trying to confirm on various reasons this can happen,
-
Server is trying to read data from the request, but its taking longer than the timeout value for the data to arrive from the client. Timeout here would typically be Tomcat connector → connectionTimeout attribute.
-
Client has a read timeout set, and server is taking longer than that to respond.
-
One of the threads I went through, said this can happen with high concurrency and if the keepalive is enabled.
For #1, the initial value I had set was 20 sec, I have bumped this up to 60sec, will test, and see if there are any changes.
Meanwhile, if any of you guys can provide you expert opinion on this, that’l be really helpful. Or for that matter any other reason you can think of which might cause this issue.
double-beep
5,04017 gold badges33 silver badges41 bronze badges
asked Jun 13, 2013 at 4:30
1
Server is trying to read data from the request, but its taking longer than the timeout value for the data to arrive from the client. Timeout here would typically be tomcat connector -> connectionTimeout attribute.
Correct.
Client has a read timeout set, and server is taking longer than that to respond.
No. That would cause a timeout at the client.
One of the threads i went through, said this can happen with high concurrency and if the keepalive is enabled.
That is obviously guesswork, and completely incorrect. It happens if and only if no data arrives within the timeout. Period. Load and keepalive and concurrency have nothing to do with it whatsoever.
It just means the client isn’t sending. You don’t need to worry about it. Browser clients come and go in all sorts of strange ways.
answered Jun 13, 2013 at 5:45
user207421user207421
306k44 gold badges307 silver badges483 bronze badges
7
Here are the basic instructions:-
- Locate the «server.xml» file in the «conf» folder beneath Tomcat’s base directory (i.e.
%CATALINA_HOME%/conf/server.xml
). - Open the file in an editor and search for
<Connector
. - Locate the relevant connector that is timing out — this will typically be the HTTP connector, i.e. the one with
protocol="HTTP/1.1"
. - If a
connectionTimeout
value is set on the connector, it may need to be increased — e.g. from 20000 milliseconds (= 20 seconds) to 120000 milliseconds (= 2 minutes). If noconnectionTimeout
property value is set on the connector, the default is 60 seconds — if this is insufficient, the property may need to be added. - Restart Tomcat
answered Sep 19, 2018 at 13:10
Steve ChambersSteve Chambers
37.4k26 gold badges158 silver badges209 bronze badges
Connection.Response resp = Jsoup.connect(url) //
.timeout(20000) //
.method(Connection.Method.GET) //
.execute();
actually, the error occurs when you have slow internet so try to maximize the timeout time and then your code will definitely work as it works for me.
answered Mar 5, 2019 at 15:09
1
I had the same problem while trying to read the data from the request body. In my case which occurs randomly only to the mobile-based client devices. So I have increased the connectionUploadTimeout
to 1min as suggested by this link
answered Dec 4, 2020 at 17:23
I have the same issue. The java.net.SocketTimeoutException: Read timed out error happens on Tomcat under Mac 11.1, but it works perfectly in Mac 10.13. Same Tomcat folder, same WAR file. Have tried setting timeout values higher, but nothing I do works.
If I run the same SpringBoot code in a regular Java application (outside Tomcat 9.0.41 (tried other versions too), then it works also.
Mac 11.1 appears to be interfering with Tomcat.
As another test, if I copy the WAR file to an AWS EC2 instance, it works fine there too.
Spent several days trying to figure this out, but cannot resolve.
Suggestions very welcome!
answered Jan 31, 2021 at 13:38
MorkusMorkus
5277 silver badges21 bronze badges
1
This happenned to my application, actually I was using a single Object which was being called by multiple functions and those were not thread safe.
Something like this :
Class A{
Object B;
function1(){
B.doSomething();
}
function2(){
B.doSomething();
}
}
As they were not threadsafe, I was getting these errors :
redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketException: Socket is closed
and
redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out
This is how I fixed it :
Class A{
function1(){
Object B;
B.doSomething();
}
function2(){
Object B;
B.doSomething();
}
}
Hope it helps
answered Jun 22, 2022 at 10:27
It means time out from your server response. It causes due to server config and internet response.
answered Mar 20, 2021 at 15:32
I am using 11.2 and received timeouts.
I resolved by using the version of jsoup below.
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.2</version>
<scope>compile</scope>
</dependency>
entpnerd
10.1k8 gold badges47 silver badges68 bronze badges
answered Feb 7, 2018 at 14:40
- HowTo
- Java Howtos
- Java.Net.SocketTimeoutException: Read …
Muhammad Zeeshan
Jan 30, 2023
Aug 11, 2022
java.net.SocketTimeoutException: Read timed out
- Causes of
java.net.SocketTimeoutException: Read timed out
- Solution to
java.net.SocketTimeoutException: Read timed out
Today’s tutorial will discuss potential reasons and solutions for the java.net.SocketTimeoutException: Read timed out
under Tomcat in Java.
java.net.SocketTimeoutException: Read timed out
java.net.SocketTimeoutException: Read timed out
occurs when the server attempts to read data from the request; however, it is taking far longer than the allowed amount of time for the data to arrive from the client. The timeout
option can have a developer’s default value pre-set for client and server activities.
Causes of java.net.SocketTimeoutException: Read timed out
The following are some potential causes that could result in java.net.SocketTimeoutException: Read timed out
:
- The server is trying to read data from the request; however, it is taking significantly more than the specified amount of time for the data to arrive from the client.
Timeout
in this context is often represented by thetomcat connector -> connectionTimeout attribute
. - When there is a lot of concurrent activity, this error can occur if the
keepalive
feature is turned on. - It occurs if no data arrives before the timeout expires.
- When the server has slow performance.
Solution to java.net.SocketTimeoutException: Read timed out
-
The modification of the
.xml
context file and theCONNECTOR
definition, which controls the connectivity of the workstation browser to the Tomcat server, is one approach that might be taken to resolve this issue inside the context of the Tomcat web application. -
To be more concise, adjust the value of the
connectionTimeout
property. Raising this value will prevent the error condition from occurring. -
For example, we have the following
.xml
file containing the below data:<Connector executor="tomcat" port="8080" protocol="HTTP/1.1" connectionTimeout="30000" redirectPort="8443" />
-
To disable the upload timeout and cancel the read-write connection timeout setting, we can add
disableUploadTimeout= "false"
.<Connector executor="tomcat" port="8080" protocol="HTTP/1.1" connectionTimeout="30000" disableUploadTimeout="false" redirectPort="8443" />
-
We can also increase the connection lifespan by including the
keepAliveTimeout= "200000"
parameter.<Connector executor="tomcat" port="8080" protocol="HTTP/1.1" connectionTimeout="30000" keepAliveTimeout= "200000" redirectPort="8443" />
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I’m a senior in an undergraduate program for a bachelor’s degree in Information Technology.
Related Article — Java Error
- Fix the Error: Failed to Create the Java Virtual Machine
- Fix the Missing Server JVM Error in Java
- Fix the ‘No Java Virtual Machine Was Found’ Error in Eclipse
- Fix the Error: Failed to Create the Java Virtual Machine
- Javax.Net.SSL.SSLHandShakeException: Remote Host Closed Connection During Handshake
- Java.Lang.VerifyError: Bad Type on Operand Stack
Jsoup SocketTimeoutException read timed out, connect timed out example shows how to fix SocketTimeoutException while using Jsoup in Java. The example also shows how to set the timeout in Jsoup.
How to fix Jsoup java.net.SocketTimeoutException: Read timed out exception?
You may encounter “java.net.SocketTimeoutException: Read timed out” exception while using the Jsoup. Here is the program which gave me the exception.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
package com.javacodeexamples.libraries.jsoup; import java.io.IOException; import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class JsoupSocketTimeOutExample { public static void main(String[] args) { try{ //connect to the website Connection connection = Jsoup.connect(«http://www.example.com»); //set user agent to Google Chrome connection.userAgent(«Mozilla/5.0»); //get the HTML document Document doc = connection.get(); //parse text from HTML String strHTML = doc.text(); }catch(IOException ioe){ //System.out.println(«IOException: » + ioe); ioe.printStackTrace(); } } } |
Output
java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at java.net.SocketInputStream.read(Unknown Source) at sun.security.ssl.InputRecord.readFully(Unknown Source) … |
Fix:
The problem is the default Jsoup timeout which is 3 seconds. If you encounter the exception “java.net.SocketTimeoutException: Read timed out”, it means that time our program took to read the requested webpage was exceeded the default timeout time (3 seconds).
You need to increase the timeout Jsoup uses to fix the problem using timeout
method of Connection class.
Connection timeout(int timeout) |
This method sets the connect and read timeout both. Please note that the timeout is in milliseconds.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
try{ //connect to the website Connection connection = Jsoup.connect(«http://www.example.com»); //set user agent to Google Chrome connection.userAgent(«Mozilla/5.0»); //set timeout to 10 seconds connection.timeout(10 * 1000); //get the HTML document Document doc = connection.get(); //parse text from HTML String strHTML = doc.text(); }catch(IOException ioe){ //System.out.println(«IOException: » + ioe); ioe.printStackTrace(); } |
How to fix Jsoup java.net.SocketTimeoutException: Connect timed out exception?
Another exception Jsoup may throw is “java.net.SocketTimeoutException: Connect timed out”. This exception means the time taken by our program to connect to the requested URL exceeded the timeout Jsoup uses.
Here is how to fix/resolve the “Connect time out” exception.
1) Make sure you are connected to the internet. Try to open the same URL in the browser and see if it opens the page.
2) Specify Jsoup connection time out before getting the document as given below.
String strText = Jsoup .connect(«http://www.example.com/») .userAgent(«Mozilla/5.0») .timeout(10 * 1000) .get() .text(); |
3) Are you behind the proxy? If yes, set Jsoup proxy.
4) It is always best practice to set user agent and referrer while creating a Jsoup connection.
Many times setting property user agent and referrer values solves this problem.
This example is a part of the Jsoup tutorial with examples.
Please let me know your views in the comments section below.
About the author
- Author
- Recent Posts
Rahim
I have a master’s degree in computer science and over 18 years of experience designing and developing Java applications. I have worked with many fortune 500 companies as an eCommerce Architect. Follow me on LinkedIn and Facebook.
Platform Notice: Data Center Only — This article only applies to Atlassian products on the Data Center platform.
Summary
When a Jira instance makes an HTTP request to a remote server, the request fails with a message similar to:
Exception in request: java.net.SocketTimeoutException: Read timed out in http POST to ...
Environment
The issue may occur in any setup where one Jira instance makes an HTTP request to a remote server.
For example, Jira A makes a request to Jira B via the Jira to Jira Issue Copy.
Diagnosis
The request in the remote server succeeds but takes more than 10 seconds, which is the default socket timeout for the client.
Cause
The reason why the request in the remote server takes more than 10 seconds should be investigated and potentially fixed.
If the request legitimately takes more than 10 seconds, the default socket timeout of 10 seconds isn’t enough on the Apache client side.
Solution
Increase the Apache client socket timeout via the JVM parameter http.socket.timeout
.
In some cases, we have seen apps that use a different parameter http.socketTimeout
.
- The value needs to be set in milliseconds.
For example:-Dhttp.socket.timeout=20000
. - For more details on setting up the JVM parameter, please refer to the Atlassian documentation Setting properties and options on startup.
- Jira should be restarted for the change to be effective.