Problem
When setting up an application link between an Atlassian Server application and an Atlassian Cloud application you receive the following error in the application logs:
A system error has occurred.
java.lang.RuntimeException: java.security.spec.InvalidKeySpecException: java.io.IOException: DER length more than 4 bytes
at com.atlassian.security.auth.trustedapps.ListApplicationRetriever.getApplicationProtocolV0(ListApplicationRetriever.java:93)
at com.atlassian.security.auth.trustedapps.ListApplicationRetriever.getApplicationProtocolV1(ListApplicationRetriever.java:52)
at com.atlassian.security.auth.trustedapps.ListApplicationRetriever.getApplication(ListApplicationRetriever.java:46)
at com.atlassian.security.auth.trustedapps.ReaderApplicationRetriever.getApplication(ReaderApplicationRetriever.java:27)
at com.atlassian.security.auth.trustedapps.InputStreamApplicationRetriever.getApplication(InputStreamApplicationRetriever.java:21)
...
Caused by: java.security.spec.InvalidKeySpecException: java.io.IOException: DER length more than 4 bytes
at org.bouncycastle.jce.provider.JDKKeyFactory.engineGeneratePublic(Unknown Source)
at org.bouncycastle.jce.provider.JDKKeyFactory$RSA.engineGeneratePublic(Unknown Source)
...
Referer URL: http://jira.example.com:8080/plugins/servlet/applinks/auth/conf/trusted/inbound-non-ual/XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
Cause
Application links between Server and Cloud instances can only be performed if your Server application is running on either port 80 or port 443 (with valid SSL certificates). The instance also needs to be accessible publicly over the internet.
The Referer URL in the above error message may display that your Server instance is running on port 8080 or some other non standard port for web applications.
Resolution
- Make sure that your Atlassian Server application is running on either port 80 or port 443 (with valid SSL certificates) and can be accessed over the internet.
-
If you have any doubts on how to configure this please contact the Atlassian Server support team at https://support.atlassian.com
Last modified on Mar 30, 2016
Related content
- No related content found
Что это за ошибка: внутреннее исключение: java.io.ioexception — проще говоря, это ошибка интернет-соединения. Ваш компьютер пытается установить соединение с выбранным вами сервером Minecraft, и это соединение прерывается во время перемещения между сервером и вашим компьютером.
Содержание
- Какое решение этой ошибки?
- Расширенный поиск и устранение неисправностей
- Удалите и переустановите свежую версию Minecraft.
- Включение собственной песочницы Java
- Смена DNS на вашем роутере на DNS-серверы Google
Какое решение этой ошибки?
Давайте начнем решать эту проблему с некоторых основных решений, которые работают практически при любой ошибке.
Не пропускайте их, если вы еще не пробовали их, потому что это самые простые решения, которые занимают минимум времени!
- Включите и снова включите роутер, отключив его на минуту, а затем снова подключив, чтобы начать играть.
- Перезагрузите компьютер.
- Перезапустите Майнкрафт.
Это основные шаги, которые позволят нам выяснить, является ли ваша проблема временной или возникла из-за более серьезной проблемы, которая потребует дополнительного устранения неполадок. Если это не помогло, пора попробовать более сложные шаги.
Расширенный поиск и устранение неисправностей
Если описанные выше базовые шаги не помогли вам, возможно, пришло время рассмотреть более сложные решения.
Удалите и переустановите свежую версию Minecraft.
Одним из главных виновников проблемы с Minecraft является… сам Minecraft. Прежде чем делать что-либо слишком сложное, чтобы попытаться решить эту проблему, попробуйте удалить игру и заново установить ее. Пока не переустанавливайте никакие пакеты текстур, моды или Optifine. Попробуйте подключиться к серверу с базовой игрой и посмотрите, решит ли это вашу проблему.
Включение собственной песочницы Java
Собственная песочница Java позволяет запускать приложения Java, такие как Minecraft, в ограниченной среде, которая может обойти все, что вызывает проблему с вашим подключением к серверу. Вы можете включить его, выполнив следующие действия:
- Перейдите к строке поиска на панели задач Windows, обычно в нижней части экрана, введите «Панель управления» и щелкните появившуюся запись.
- Найдите раздел с заголовком «Программы» и щелкните этот заголовок.
- На следующем экране вы должны увидеть значок «Java». Щелкните заголовок. Мы отметили заголовок Java и значок красным на рисунке ниже.
- Теперь у вас должно появиться небольшое всплывающее окно с надписью «Панель управления Java». В нем переключитесь на вкладку «Дополнительно» и начните прокрутку вниз, пока не увидите раздел с надписью «Дополнительные параметры безопасности». Мы отметили этот раздел красным на рисунке выше.
- Здесь вы найдете параметр «Включить ограниченную среду операционной системы (собственная песочница)». Убедитесь, что он отмечен галочкой, затем нажмите «Применить», а затем «ОК».
- Очень важно перезагрузить компьютер , чтобы изменения вступили в силу.
После перезагрузки компьютера снова запустите Minecraft и посмотрите, сохраняется ли соединение с сервером. Если это не так, не стесняйтесь снова отключить собственную песочницу, чтобы не добавлять дополнительные параметры к проблеме, которую вы пытаетесь отследить.
Смена DNS на вашем роутере на DNS-серверы Google
У вашего интернет-провайдера могут быть временные проблемы с DNS-сервером, из-за которых ваш компьютер не может найти сервер, к которому вы подключаетесь. Вы можете найти настройки DNS в панели администрирования вашего маршрутизатора / модема, и обычно они устанавливаются автоматически.
Почти все маршрутизаторы позволяют переключать DNS-серверы на те, которые вы указываете вручную, обычно два из них. Вам следует ввести следующие значения:
- Первичный DNS-сервер: 8.8.8.8
- Вторичный DNS-сервер: 8.8.4.4
Новые настройки DNS-сервера будут подключаться к собственным серверам Google всякий раз, когда он пытается подключиться к чему-либо с вашего компьютера, и со временем это будет намного надежнее, чем то, что вам даст ваш местный интернет-провайдер. Даже если это решение не сработает, вероятно, вам стоит сохранить новые настройки.
The java.io.EOFException
is a checked exception in Java that occurs when an end of file or end of stream is reached unexpectedly during input. This exception is mainly used by data input streams to signal end of stream.
Since EOFException
is a checked exception, it must be explicitly handled in methods that can throw this exception — either by using a try-catch block or by throwing it using the throws
clause.
What Causes EOFException
While reading the contents of a file or stream using DataInputStream
objects, if the end of the file or stream is reached unexpectedly, an EOFException
is thrown. Methods of the DataInputStream
class that are used to read data such as readBoolean()
, readByte()
and readChar()
can throw this exception.
Many other input operations return a special value on end of file or stream rather than throwing an exception.
EOFException Example
Here’s an example of a EOFException
thrown when trying to read all characters from an input file:
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class EOFExceptionExample {
public static void main(String[] args) {
DataInputStream inputStream = null;
try {
inputStream = new DataInputStream(new FileInputStream("myfile.txt"));
while (true) {
inputStream.readChar();
}
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
try {
inputStream.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
}
In the above example, the contents of a file with the name myfile.txt
are read in an infinite loop using the DataInputStream.readChar()
method. When the readChar()
method is called at the end of the file, an EOFException
is thrown:
java.io.EOFException
at java.base/java.io.DataInputStream.readChar(DataInputStream.java:369)
at EOFExceptionExample.main(EOFExceptionExample.java:13)
How to Fix EOFException
Since EOFException
is a checked exception, a try-catch block should be used to handle it. The try
block should contain the lines of code that can throw the exception and the catch
block should catch and handle the exception appropriately.
The above example can be updated to handle the EOFException
in a try-catch block:
import java.io.DataInputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.IOException;
public class EOFExceptionExample {
public static void main(String[] args) {
DataInputStream inputStream = null;
try {
inputStream = new DataInputStream(new FileInputStream("myfile.txt"));
while (true) {
try {
inputStream.readChar();
} catch (EOFException eofe) {
System.out.println("End of file reached");
break;
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
try {
inputStream.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
}
Here, the inputStream.readChar()
method call is placed in a try
block and the EOFException
is caught inside the catch
block. When an EOFException
occurs at the end of the file, it is handled and a break
statement is used to break out of the loop.
Track, Analyze and Manage Errors With Rollbar
Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being able to track, analyze, and manage errors in real-time can help you to proceed with more confidence. Rollbar automates error monitoring and triaging, making fixing Java errors easier than ever. Sign Up Today!
Многие пользователи Minecraft видят следующие ошибки при попытке запустить игру. И из-за этого они не могут играть в игру.
Соединение потеряно
Внутреннее исключение: java.io.IOException: существующее соединение было принудительно закрыто удаленным хостом.
В этой статье мы увидим, как решить эту проблему с помощью некоторых простых и простых в исполнении решений. Итак, если у вас возникла проблема с внутренним исключением Java.IO.IOException Minecraft, то это руководство для вас.
Как исправить внутреннее исключение Minecraft Java IO IOException Существующее соединение было принудительно закрыто удаленным хостом?
Ошибка внутреннего исключения Minecraft — это обычно ошибка или сбой, которые можно легко исправить с помощью некоторых решений. Это также может быть вызвано плохим подключением к Интернету. Если вы используете мобильную точку доступа или какой-либо другой режим подключения с медленным Интернетом, то, скорее всего, вы не собираетесь подключаться к серверу. Если проблема связана с ошибкой, единственный способ исправить ее — это если разработчик Minecraft выпустит обновление программного обеспечения. Если это сбой, вам необходимо проверить обходные пути, которые мы упоминали ниже, чтобы решить проблему.
Чтобы исправить ошибку Internal Exception Java.IO.IOException Minecraft, вам необходимо следовать данным решениям.
- Перезагрузите компьютер
- Обновить Майнкрафт
- Попросите администратора перезапустить сервер
- Очистить DNS и обновить IP
- Отключить пакет ресурсов сервера
- Устранение неполадок в чистой загрузке
- Проверьте подключение к Интернету
- Исправить Java
Поговорим о них подробнее.
1]Перезагрузите компьютер
Начнем с самого простого из решений. Перезагрузка ПК сработала для многих пользователей, поскольку в основном перезапускаются все службы, которые были запущены ранее, а также отключаются все ненужные процессы. Итак, перезагрузите компьютер и посмотрите, сохраняется ли проблема.
2]Обновить Майнкрафт
Обновление Майнкрафт имеет свойство убивать двух зайцев одним выстрелом. Это не только избавит вас от ошибки, которая могла быть причиной проблемы, но и в то же время заставит ваше клиентское приложение соответствовать версии сервера, к которому вы пытаетесь подключиться. Потому что вы не сможете подключиться к серверу, если есть несоответствие между версией приложения, которое вы оба используете.
Чтобы обновить Minecraft, вам необходимо выполнить следующие действия.
- Откройте Minecraft.
- Нажмите на Опции со страницы входа.
- Затем нажмите Принудительное обновление! > Применить.
Подождите, пока будет установлено обновление, и посмотрите, поможет ли это решить проблему.
3]Попросите администратора перезапустить сервер.
Проблема может возникнуть из-за сбоя на сервере. Вам следует связаться с администратором сервера и попросить его перезапустить сервер. Только они имеют право перезапустить его. Итак, сделайте это и посмотрите, сохраняется ли проблема.
4]Очистить DNS и обновить IP
Проблема может быть из-за поврежденных DNS и IP-адресов. Хорошая новость в том, что вы можете легко очистить DNS и обновить IP и посмотреть, поможет ли это решить проблему. Для этого откройте командную строку от имени администратора из меню «Пуск» и выполните следующие команды.
ipconfig / flushdns ipconfig / release ipconfig / обновить
Наконец, перезагрузите компьютер, снова откройте Minecraft и посмотрите, поможет ли это решить проблему.
5]Отключить пакет ресурсов сервера
Многие пользователи склонны устанавливать Пакет ресурсов чтобы придать вашей игре немного размаха. Это позволяет вам создавать текстуры, музыку и другие вещи для игры. Но иногда он может запретить вам подключиться к серверу. Итак, эта ошибка может быть именно по этой причине. Вот почему мы собираемся отключить Server’s Resource Pack и посмотреть, поможет ли это.
- Запустите Minecraft.
- Перейти к Мультиплеер.
- Затем перейдите к Проблемный сервер и нажмите Редактировать.
- Наконец, щелкните Server Resource Packs и отключите его.
Затем проверьте, сохраняется ли проблема.
6]Устранение неполадок при чистой загрузке
Иногда причиной вашего раздражения может быть другое приложение. Однако нам не нужно, что это за приложение. Следовательно, вам следует устранить неполадки в чистой загрузке и посмотреть, какое приложение мешает работе вашей программы. Затем вы можете решить, что с ним делать.
7]Проверьте подключение к Интернету
Говорить о проблеме, которая мешает вам подключиться к серверу, и не проверять подключение к Интернету, было бы немного глупым решением. Вытащите средство проверки скорости Интернета и посмотрите, получаете ли вы достаточную пропускную способность. Если нет, проверьте, все ли устройства, подключенные к одной сети, имеют одинаковую пропускную способность. В случае, если ваше единственное устройство имеет медленный Интернет, попробуйте исправить медленный Интернет.
8]Исправить Java
Как вы могли заметить, увидев сообщение об ошибке, эта проблема как-то связана с Java. Итак, попробуйте обновить Java и посмотрите, работает ли это. Для этого выполните следующие действия.
- Нажмите Win + S, тип «Настроить Java » и нажмите ОК.
- Перейти к Вкладка «Обновить».
- Щелкните Обновить сейчас.
Таким образом ваша Java будет обновлена и посмотрите, сохраняется ли проблема.
Вот и все!
Также проверьте:
При запуске игр мы часто сталкиваемся с различными ошибками и сбоями, которые заставляют переключить нашу вовлеченность с игрового мира в процесс поиска способов их решения. Более того, некоторые из них не просто решить. В частности, к таким ошибкам при запуске Minecraft относится и «internal exception java.io.ioexception», которая препятствует подключению ПК к внешнему серверу игры.
Содержание
- 1 Простые решения
- 2 Варианты запуска
- 3 Отключение межсетевого экрана
- 4 Установка разрешений в брандмауэре Windows
- 5 Уменьшение глубины прорисовки
Простые решения
В общем она может появиться по ряду причин и некоторые из них можно исправить простыми способами. Поэтому прежде чем перейти к более продвинутым решениям выполните следующие шаги.
Во-первых, попробуйте исправить ошибку Java.Io.Ioexception обычным перезапуском Minecraft. В противном случае перезапустите компьютер и роутер. Также нужно проверить состояние внешнего сервера Minecraft. Если эти методы не сработали, перейдите к следующим шагам.
Варианты запуска
Ошибка внутреннего исключения «internal exception java.io.ioexception удаленный хост принудительно разорвал существующее подключение» в основном происходит из-за проблем с Java. Даже если игра работает, сбой может произойти из-за проблем этой среды выполнения. Иногда программа запуска использует старую версию java, хотя в системе установлен последний ее выпуск.
В этом случае нужно заставить загрузчик Minecraft использовать последнюю версию программной среды. Для этого нужно перейти в параметры запуска и в профиле переключить путь с устаревшей версии на новую.
Отключение межсетевого экрана
Межсетевые экраны, включая брандмауэр Windows, могут сбросить подключение с внешним сервером Minecraft на этапе запуска игры. Чтобы узнать, не причастен ли он к этому событию, попробуйте отключить эту функцию безопасности.
Откройте параметры Windows нажатием на Win + I и перейдите в раздел Обновление и безопасность. На вкладке Безопасность Windows выберите раздел Брандмауэр и защита сети.
Для активной частной сети переместите переключатель в положение «Отключено». После этого попробуйте запустить игру.
Установка разрешений в брандмауэре Windows
Если продолжаете сталкиваться с ошибкой внутреннего исключения java.io.ioexception, попробуйте добавить среду в список разрешений брандмауэра.
С помощью поискового запроса перейдите в брандмауэр. На панели слева перейдите на вкладку «Разрешение взаимодействия с приложением или компонентом в брандмауэре Windows». Затем щелкните на кнопку изменения параметров.
Найдите в списке файлы Java Platform SE и разрешите им доступ по частной сети.
После перезагрузки компьютера проблема должна быть решена.
Уменьшение глубины прорисовки
С ошибкой внутреннего исключения можно столкнуться, когда Minecraft не сможет отобразить всю картинку в целом из-за низкой скорости Интернета. В этом случае уменьшите глубину прорисовки в настройках до минимально допустимого.
В настройках Майнкрафт в разделе «Настройки графики» переместите ползунок прорисовки до минимального, например, до 2-х позиций.
Если ошибка исчезла, увеличьте этот показатель на единицу, пока не достигните оптимального значения.
Вопрос:
Это мой метод:
import org.bouncycastle.asn1.ASN1InputStream;
import java.io.ByteArrayInputStream;
...
public static byte[] toDERBytes(byte[] data) throws IOException
{
ByteArrayInputStream inStream = new ByteArrayInputStream(data);
//Uses imported bouncy castle library:
ASN1InputStream asnInputStream = new ASN1InputStream(inStream);
byte[] derArray = asnInputStream.readObject().getEncoded();
asnInputStream.close();
return derArray;
}
Согласно документации BouncyCastle, я видел, что ASN1InputStream.readobject() должен фактически получить объект DER, а не ASN1. (Насколько я понимаю, DER является подтипом ASN1)
Затем я возвращаю байты.
Это работает в полтора раза, но в другой половине я получаю эту ошибку:
java.io.IOException: DER length more than 4 bytes: XXX
Мои вопросы:
- Почему я только получаю ошибку SOMETIMES? (Я всегда даю ему 65 байтов данных)
- Как это исправить?
- Я DER кодирую правильный путь?
Лучший ответ:
Метод, который я вызываю, ожидает кодированные данные, а не данные, подлежащие кодированию. Я идиот.
Идиотизм nr. 2: Я думал, что DER был своего рода алгоритмом сжатия, но его для кодирования объектов с четко определенными типами, полями и данными. Похоже на JSON или XML, я думаю.
Как оказалось, структура, которую я собираюсь использовать для for/in, также просто использует DER по ошибке, потому что она была предоставлена OpenSSL – она не добавляет никакого значения в эту структуру, поскольку все байты уже хорошо определены.
Нет смысла говорить что-то вроде DER (random_byte_string_data), потому что результат будет примерно таким: [тип, длина, данные] или фактические байты: 04 10 <10 байт данных> (04 – тип, используемый для octet_string = байтовые массивы)
Лично сейчас, когда я это понимаю, я вообще не получаю значение DER – его не удобочитаемый человек, и если вы все-таки имеете дело с байтами на уровне компьютеров, то почему дополнительное дополнение? Вы можете только MAP данные DER, если знаете, что это такое (какой DER не говорит вам, в отличие от XML/JSON), что означает USE DER, вы ДОЛЖНЫ иметь заранее установленную схему/протокол.
Который возвращает меня обратно: если вы имеете дело с байтами в предопределенной среде/протоколе, почему этот классный вид глупых дополнений и отходов полосы пропускания/пространства?
Почему не формат, который добавляет контрольные суммы и сжимает данные вместо DER…
In this tutorial we will discuss about the EOFException
in Java. This exception indicates the the end of file (EOF), or the end of stream has been reached unexpectedly. Also, this exception is mainly used by DataInputStreams
, in order to signal the end of stream. However, notice that other input operations may return a special value upon the end of a stream, instead of throwing an EOFException
.
The EOFException
class extends the IOException
class, which is the general class of exceptions produced by failed, or interrupted I/O operations. Moreover, it implements the Serializable
interface. Also, it is defined as a checked exception and thus, it must be declared in a method, or a constructor’s throws clause.
Finally, the EOFException
exists since the 1.0 version of Java.
The Structure of EOFException
Constructors
EOFException()
EOFException(String s)
Creates an instance of the EOFException
class, setting null
as its message.
Creates an instance of the EOFException
class, using the specified string as message. The string argument indicates the name of the class that threw the error.
The EOFException in Java
DataInputStreams
provide methods that can read primitive Java data types from an underlying input stream in a machine-independent way. An application writes data, by using the methods provided by the OutputStream
class, or the DataOutputStream
class.
Specifically, primitive types can be read by an application, using one of the following methods:
readBoolean()
– Reads one input byte and returnstrue
if that byte is nonzero,false
if that byte is zero.readByte()
– Reads and returns one input byte.readChar()
– Reads two input bytes and returns achar
value.readDouble()
– Reads eight input bytes and returns adouble
value.readFloat()
– Reads four input bytes and returns afloat
value.readInt()
– Reads four input bytes and returns anint
value.readLong()
– Reads eight input bytes and returns along
value.readShort()
– Reads two input bytes and returns ashort
value.readUnsignedByte()
– Reads one input byte and returns it as a zero-extendedint
value. The integer value resides in the range [0, 255].readUnsignedShort()
– Reads two input bytes and returns them as anint
value. The integer value resides in the range [0, 65535].
For a list of all available methods, take a closer look on the DataInputStream
class.
The following example reads all characters from an input file:
EOFExceptionExample.java:
import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.EOFException; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class EOFExceptionExample { //The name of the input file. private final static String FILENAME = "input.txt"; private static void writeToFile() throws IOException { DataOutputStream out = new DataOutputStream(new FileOutputStream(FILENAME)); //Write a string to the stream. String str = "Hello from Java Code Geeks!"; for(int i = 0; i < str.length(); ++i) out.writeChar(str.charAt(i)); //Close the data stream. out.close(); return; } public static void main(String[] args) { DataInputStream input = null; try { //Write some integers to the file. writeToFile(); // Read all characters, until an EOFException is thrown. input = new DataInputStream(new FileInputStream(FILENAME)); while(true) { char num; try { num = input.readChar(); System.out.println("Reading from file: " + num); } catch (EOFException ex1) { break; //EOF reached. } catch (IOException ex2) { System.err.println("An IOException was caught: " + ex2.getMessage()); ex2.printStackTrace(); } } } catch (IOException ex) { System.err.println("An IOException was caught: " + ex.getMessage()); ex.printStackTrace(); } finally { try { // Close the input stream. input.close(); } catch(IOException ex) { System.err.println("An IOException was caught: " + ex.getMessage()); ex.printStackTrace(); } } } }
In this example we first, write a string to a file and then, use the readChar()
method to read all written characters one-by-one.
A sample execution is shown below:
Reading from file: H Reading from file: e Reading from file: l Reading from file: l Reading from file: o Reading from file: Reading from file: f Reading from file: r Reading from file: o Reading from file: m Reading from file: Reading from file: J Reading from file: a Reading from file: v Reading from file: a Reading from file: Reading from file: C Reading from file: o Reading from file: d Reading from file: e Reading from file: Reading from file: G Reading from file: e Reading from file: e Reading from file: k Reading from file: s Reading from file: !
Once the EOFException
is thrown, we only have to break from the reading loop and then, close the stream.
Download the Eclipse Project
This was a tutorial about the EOFException
in Java.