Java io ioexception процесс не может получить доступ к файлу
Процесс не может получить доступ к файлу filename, потому что он используется другим процессом.
Что это значит и что я могу с этим поделать?
В чем причина?
Отладка
Это может быть довольно легко решить (или довольно сложно понять), в зависимости от вашего конкретного сценария. Посмотрим.
Ваш процесс - единственный, кто имеет доступ к этому файлу
Вы уверены, что другой процесс - это ваш собственный процесс. Если вы знаете, что открываете этот файл в другой части программы, то, прежде всего, вы должны убедиться, что вы правильно закрываете дескриптор файла после каждого использования. Вот пример кода с этой ошибкой:
К счастью, FileStream реализует IDisposable , поэтому весь ваш код легко заключить в оператор using :
Этот шаблон также гарантирует, что файл не останется открытым в случае исключений (это может быть причиной того, что файл используется: что-то пошло не так, и никто его не закрыл; см. эта публикация в качестве примера).
Обратите внимание на распространенную ошибку, которую мы очень часто видим в StackOverflow:
В этом случае ReadAllText() завершится ошибкой, потому что файл уже используется ( File.Open() в предыдущей строке). Открывать файл заранее не только излишне, но и неправильно. То же самое относится ко всем функциям File , которые не возвращают дескриптор файла, с которым вы работаете: File.ReadAllText() , File.WriteAllText() , File.ReadAllLines() , File.WriteAllLines() и другие (например, функции File.AppendAllXyz() ) будут открывать и закрывать файл самостоятельно.
Не только ваш процесс может получить доступ к этому файлу
Если ваш процесс не единственный, кто обращается к этому файлу, взаимодействие может быть сложнее. Поможет шаблон повтора (если файл не должен открываться кем-либо, но он открыт, тогда вам понадобится утилита, такая как Process Explorer, чтобы проверить, кто делает что ).
Способы избежать
Если возможно, всегда используйте операторы using для открытия файлов. Как было сказано в предыдущем абзаце, это поможет вам избежать многих распространенных ошибок (см. этот пост для примера на как не использовать ).
Если возможно, попробуйте решить, кому принадлежит доступ к определенному файлу, и централизовать доступ с помощью нескольких хорошо известных методов. Если, например, у вас есть файл данных, в котором ваша программа читает и записывает, вам следует поместить весь код ввода-вывода в один класс. Это упростит отладку (потому что вы всегда можете поставить там точку останова и посмотреть, кто что делает), а также это будет точка синхронизации (если требуется) для множественного доступа.
Не забывайте, что операции ввода-вывода всегда могут потерпеть неудачу, типичный пример:
Если кто-то удалит файл после File.Exists() , но до File.Delete() , то он бросит IOException в место, где вы можете ошибочно чувствовать себя в безопасности.
По возможности применяйте шаблон повтора , а если вы используете FileSystemWatcher , подумайте о том, чтобы отложить действие (потому что вы получите уведомление, но приложение может по-прежнему работать исключительно с этим файлом ).
Расширенные сценарии
Это не всегда так просто, поэтому вам может потребоваться предоставить доступ кому-то другому. Если, например, вы читаете с начала и пишете до конца, у вас есть как минимум два варианта.
1) использовать один и тот же FileStream с соответствующими функциями синхронизации (потому что он не является потокобезопасным ). См. это и это посты для примера.
2) используйте перечисление FileShare , чтобы указать ОС разрешить другим процессам (или другим частям вашего собственного процесса) одновременный доступ к одному и тому же файлу.
В этом примере я показал, как открыть файл для записи и поделиться для чтения; обратите внимание, что при чтении и записи перекрытия приводят к неопределенным или недействительным данным. Это ситуация, с которой нужно обращаться при чтении. Также обратите внимание, что это не делает доступ к stream потокобезопасным, поэтому этот объект не может использоваться несколькими потоками, если доступ не синхронизируется каким-либо образом (см. Предыдущие ссылки). Доступны и другие варианты совместного использования, и они открывают более сложные сценарии. См. MSDN Больше подробностей.
В общем, N процессов могут читать из одного и того же файла все вместе, но только один должен писать, в контролируемом сценарии вы можете даже включить одновременную запись, но это не может быть обобщено в нескольких абзацах текста внутри этого ответа.
Можно ли разблокировать файл, используемый другим процессом? Это не всегда безопасно и не так просто, но да, возможно.
Использование FileShare решило мою проблему с открытием файла, даже если он был открыт другим процессом.
отладка
это может быть довольно легко решить (или очень трудно понять), в зависимости от конкретного сценария. Давайте посмотрим.
ваш процесс является единственным для доступа к файл
Вы уверены, что другое процесс-это ваш собственный процесс. Если вы знаете, что открыть файл в другой части вашей программы, то прежде всего вам нужно проверить, правильно ли закрыть файл handle после каждого использования. Вот пример кода с этой ошибкой:
к счастью FileStream осуществляет IDisposable , поэтому легко обернуть весь код внутри using о себе:
этот шаблон также гарантирует, что файл не будет оставлен открытым в случае исключений (возможно, по этой причине файл используется: что-то пошло не так, и никто не закрыл его; см. этот пост для примера).
обратите внимание на распространенную ошибку, которую мы видим очень часто на Сайте StackOverflow:
в этом случае ReadAllText() произойдет сбой, потому что файл используется ( File.Open() в строке до). Открывать файл заранее не только не нужно, но и неправильно. То же самое относится ко всем File функции, которые не возвращают дескриптор к файлу, с которым вы работаете: File.ReadAllText() , File.WriteAllText() , File.ReadAllLines() , File.WriteAllLines() и другие (например, File.AppendAllXyz() функции) все откроют и закроют файл сами по себе.
ваш процесс это не единственный доступ к этому файлу
Если ваш процесс не единственный для доступа к этому файлу, взаимодействие может быть сложнее. А шаблон повтора поможет (если файл не должен быть открыт кем-либо еще, но это так, то вам нужна утилита, такая как Process Explorer, чтобы проверить кто делает что).
способов избежать
при необходимости, всегда используйте используя заявления для открытия файлов. Как сказано в предыдущем абзаце он активно поможет вам избежать многих распространенных ошибок (см. этот пост пример как не использовать).
если возможно, попробуйте решить, кому принадлежит доступ к определенному файлу и централизовать доступ с помощью нескольких известных методов. Если, например, у вас есть файл данных, где ваша программа читает и записывает, то вы должны поместить весь код ввода-вывода в один класс. Это облегчит отладку (потому что вы всегда можете поставить точку останова там и посмотреть, кто что делает), а также это будет точка синхронизации (если требуется) для множественного доступа.
не забывайте, что операции ввода-вывода всегда может выйти из строя, например это:
если кто-то удаляет файл после File.Exists() но до File.Delete() , тогда он бросит IOException в месте, где вы можете ошибочно чувствовать себя в безопасности.
когда это возможно, примените шаблон повтора, и если вы используете FileSystemWatcher , рассмотрите возможность отсрочки действия (потому что вы получите уведомление, но приложение все еще может работать исключительно с этим файлом).
дополнительные сценарии
Это не всегда так просто, поэтому вам может потребоваться поделиться доступом с кем-то другим. Если, например, Вы читаете с начала и пишете до конца, у вас есть по крайней мере два варианта.
2) использовать FileShare перечисление для указания ОС разрешить другим процессам (или другим частям вашего собственного процесса) одновременно получать доступ к тому же файлу.
в общем N процессы могут читать из одного файла все вместе, но только один должен писать, в контролируемом сценарии вы можете даже включите параллельные записи, но это не может быть обобщено в нескольких текстовых абзацах внутри этого ответа.
можно разблокировать файл, используемый другим процессом? Это не всегда безопасно и не так просто, Но да,вполне возможно.
У меня есть код, и когда он выполняется, он выдает IOException , говоря это
Процесс не может получить доступ к файлу filename, потому что он используется другим процессом.
Что это означает и что я могу с этим поделать?
- 2 См. Этот вопрос, чтобы узнать, как найти другой процесс, использующий файл.
В чем причина?
Отладка
Это может быть довольно легко решить (или довольно сложно понять), в зависимости от вашего конкретного сценария. Давай посмотрим.
Ваш процесс - единственный, кто имеет доступ к этому файлу
Вы уверены, что Другие процесс - это ваш собственный процесс. Если вы знаете, что открываете этот файл в другой части программы, то, прежде всего, вы должны убедиться, что вы правильно закрываете дескриптор файла после каждого использования. Вот пример кода с этой ошибкой:
К счастью FileStream орудия IDisposable , так что весь код легко поместить в using заявление:
Этот шаблон также гарантирует, что файл не останется открытым в случае исключений (это может быть причиной того, что файл используется: что-то пошло не так, и никто его не закрыл; см. Этот пост для примера).
Обратите внимание на распространенную ошибку, которую мы очень часто видим в StackOverflow:
В этом случае ReadAllText() завершится ошибкой, потому что файл уже используется ( File.Open() в строке перед). Открывать файл заранее не только не нужно, но и неправильно. То же самое касается всех File функции, которые не возвращают ручка в файл, с которым вы работаете: File.ReadAllText() , File.WriteAllText() , File.ReadAllLines() , File.WriteAllLines() и другие (например, File.AppendAllXyz() functions) будут открывать и закрывать файл самостоятельно.
Не только ваш процесс имеет доступ к этому файлу
Если ваш процесс не единственный, кто обращается к этому файлу, взаимодействие может быть сложнее. А шаблон повтора поможет (если файл не должен открываться кем-либо, кроме него, то вам понадобится такая утилита, как Process Explorer, чтобы проверить ВОЗ делается какие).
Способы избежать
Когда возможно, всегда используйте с помощью операторы для открытия файлов. Как было сказано в предыдущем абзаце, это поможет вам избежать многих распространенных ошибок (см. Этот пост для примера как не использовать это).
Если возможно, попробуйте решить, кому принадлежит доступ к определенному файлу, и централизовать доступ с помощью нескольких хорошо известных методов. Если, например, у вас есть файл данных, в котором ваша программа читает и записывает, вам следует поместить весь код ввода-вывода в один класс. Это упростит отладку (потому что вы всегда можете поставить там точку останова и посмотреть, кто что делает), а также это будет точка синхронизации (при необходимости) для множественного доступа.
Не забывайте, что операции ввода-вывода всегда могут завершиться ошибкой. Типичный пример:
Если кто то удаляет файл после File.Exists() но прежде File.Delete() , то он бросит IOException в месте, где вы можете ошибочно чувствовать себя в безопасности.
По возможности применяйте шаблон повтора, и если вы используете FileSystemWatcher , рассмотрите возможность отсрочки действия (поскольку вы получите уведомление, но приложение может по-прежнему работать исключительно с этим файлом).
Расширенные сценарии
Это не всегда так просто, поэтому вам может потребоваться предоставить доступ кому-то другому. Если, например, вы читаете с начала и пишете до конца, у вас есть как минимум два варианта.
1) делитесь тем же FileStream с соответствующими функциями синхронизации (потому что это не потокобезопасный). См. Этот и этот посты для примера.
2) использовать FileShare перечисление для указания ОС разрешить другим процессам (или другим частям вашего собственного процесса) одновременный доступ к тому же файлу.
В этом примере я показал, как открыть файл для записи и поделиться для чтения; обратите внимание, что при чтении и записи перекрытия приводят к неопределенным или недействительным данным. Это ситуация, с которой нужно обращаться при чтении. Также обратите внимание, что это не делает доступ к stream потокобезопасный, поэтому этот объект не может использоваться несколькими потоками, если доступ не синхронизирован каким-либо образом (см. предыдущие ссылки). Доступны и другие варианты совместного использования, которые открывают более сложные сценарии. Пожалуйста, обратитесь к MSDN для получения более подробной информации.
В общем N процессы могут читать из одного и того же файла все вместе, но только один должен писать, в контролируемом сценарии вы можете даже включить одновременную запись, но это не может быть обобщено в нескольких абзацах текста внутри этого ответа.
Это возможно разблокировать файл, используемый другим процессом? Это не всегда безопасно и не так просто, но да, возможно.
С помощью FileShare исправлена моя проблема с открытием файла, даже если он открыт другим процессом.
Возникла проблема при загрузке изображения, и я не мог его удалить, и нашел решение. gl hf
Я получил эту ошибку, потому что делал File.Move по пути к файлу без имени файла, необходимо указать полный путь в месте назначения.
- И не только без имени файла. Недопустимое (целевое) имя файла - в моем случае ". \ file". - выдаст ту же глупую ошибку и на полдня укажет неверное направление!
Как уже упоминалось в других ответах, есть несколько основных вещей, которых можно избежать:
В FileStream операций, поместите его в using блок с FileShare.ReadWrite режим доступа.
Обратите внимание, что FileAccess.ReadWrite невозможно, если вы используете FileMode.Append .
Я столкнулся с этой проблемой, когда использовал входной поток для выполнения File.SaveAs когда файл использовался. В моем случае я обнаружил, что мне вообще не нужно было сохранять его обратно в файловую систему, поэтому я просто удалил его, но, вероятно, я мог бы попытаться создать FileStream в using заявление с FileAccess.ReadWrite , как и в приведенном выше коде.
Сохранение ваших данных в виде другого файла и возврат к удалению старого, когда выясняется, что он больше не используется, а затем переименование успешно сохраненного файла на имя исходного - это вариант. То, как вы проверяете, какой файл используется, осуществляется через
в моем коде ниже, и это можно сделать в службе Windows в цикле, если у вас есть определенный файл, который вы хотите регулярно просматривать и удалять, когда вы хотите его заменить. Если у вас не всегда есть один и тот же файл, можно обновить текстовый файл или таблицу базы данных, чтобы служба всегда проверяла имена файлов, а затем выполняет эту проверку для процессов и впоследствии выполняет уничтожение процессов и удаление на нем, как я описываю. в следующем варианте. Обратите внимание, что вам понадобятся имя пользователя и пароль учетной записи, у которых есть права администратора на данном компьютере, конечно, для выполнения удаления и завершения процессов.
Когда вы не знаете, будет ли файл использоваться, когда вы пытаетесь его сохранить, вы можете закрыть все процессы, которые могли его использовать, например Word, если это документ Word, перед сохранением.
Если он местный, можно сделать так:
Если он удаленный, вы можете сделать это:
где txtUserName в форме DOMAIN\user .
Допустим, вы не знаете имя процесса, блокирующего файл. Затем вы можете сделать это:
Обратите внимание, что file должен быть UNC-путь: \\computer\share\yourdoc.docx для того, чтобы Process выяснить, на каком компьютере он находится, и p.MachineName быть действительным.
Ниже приведен класс, который используют эти функции, для которого требуется добавить ссылку на System.Management . Первоначально код был написан Эриком Дж.:
Как указывали другие ответы в этом потоке, для устранения этой ошибки вам необходимо внимательно изучить код, чтобы понять, где файл блокируется.
В моем случае я отправлял файл как вложение электронной почты перед выполнением операции перемещения.
Таким образом, файл был заблокирован на пару секунд, пока SMTP-клиент не завершил отправку электронной почты.
Я принял решение: сначала переместите файл, а затем отправьте электронное письмо. Это решило проблему для меня.
Другое возможное решение, как было указано ранее Хадсоном, заключалось в удалении объекта после использования.
- Если файл уже используется File.Move() не работает и дает ту же ошибку. Если просто добавить файл в электронное письмо, я не думаю, что это ошибка при использовании во время Attachments.Add() операция, потому что это просто операция копирования. Если это произошло по какой-то причине, вы можете скопировать его в каталог Temp, прикрепить копию и впоследствии удалить скопированный файл. Но я не думаю, что если OP хочет изменить файл и использовать его, такое решение (код которого вы не показывали, только присоединяемая часть) будет работать. .Dispose() всегда хорошая идея, но здесь не актуальна, если файл не был открыт в предыдущей операции.
У меня был следующий сценарий, который вызывал ту же ошибку:
- Загрузить файлы на сервер
- Затем избавьтесь от старых файлов после того, как они были загружены
Большинство файлов были небольшого размера, однако некоторые были большими, поэтому попытка удалить их привела к не может получить доступ к файлу ошибка.
Я использую FileStream и имею ту же проблему .. Когда когда-либо два запроса пытаются прочитать один и тот же файл, он выдает это исключение.
решение использовать FileShare
Я просто читаю файл одновременно FileShare.Read решить мою проблему.
У меня была эта проблема, и она была решена с помощью кода ниже
Мой приведенный ниже код решает эту проблему, но я предлагаю Прежде всего вам нужно понять, что вызывает эту проблему, и попробовать решение, которое вы можете найти, изменив код
Я могу предложить другой способ решения этой проблемы, но лучшее решение - проверить вашу структуру кодирования и попытаться проанализировать, что заставляет это происходить. Если вы не найдете никакого решения, вы можете использовать этот код ниже.
Средство запуска Minecraft может отображать проблему «Внутреннее исключение Java.IO.IOException», если установка Minecraft повреждена или устарела. Более того, поврежденный кеш DNS системы или неправильная конфигурация Java также могут вызвать проблему.
«Внутреннее исключение при потере соединения: java.io.IOException: существующее соединение было принудительно закрыто удаленным хостом»
Прежде чем приступить к решениям по остановке внутренних исключений в Java IO IOException, проверьте, решает ли проблему попытка использования другого сетевого кабеля (при использовании соединения Ethernet). Если у вас длинное имя пользователя (7+ символов), проверьте, решает ли проблему сокращение его до (7 или меньше символов). Также проверьте, соответствует ли скорость вашего интернета минимальным требованиям Minecraft. Кроме того, обязательно выйдите из системы / отключите Minechat (если он используется), а затем закройте его. Кроме того, проверьте, решает ли проблему запуск программы запуска Minecraft (или сервера) от имени администратора.
Решение 1. Обновите программу запуска Minecraft до последней сборки.
Вы можете столкнуться с проблемой внутреннего исключения, если программа запуска Minecraft в вашей системе устарела, поскольку это может создать несовместимость между программой запуска и сервером. В этом контексте обновление средства запуска Minecraft до последней версии может решить проблему. Но прежде чем двигаться дальше, проверьте, настроено ли у вас более одной учетной записи с пусковой установкой Minecraft, если да, то удалите все остальные учетные записи, кроме одной.
- Откройте программу запуска Minecraft и рядом с именем пользователя нажмите Параметры.
- Затем нажмите кнопку «Принудительное обновление» и примените обновление пусковой установки.Принудительно обновить пусковую установку Minecraft
- После обновления перезапустите средство запуска Minecraft и проверьте, нет ли ошибки IOexception.
- Если нет, проверьте, решает ли проблему использование другого средства запуска.
Решение 2. Очистите кеш DNS вашей системы
Ошибка Java.io может возникнуть, если кеш DNS вашей системы поврежден, так как это может привести к тому, что система не сможет разрешить доменное имя. В этом контексте очистка кеша DNS (что заставит систему повторно получать комбинации) может решить проблему.
- Щелкните Windows, введите: Командная строка и щелкните правой кнопкой мыши результат командной строки. Затем выберите Запуск от имени администратора.Откройте командную строку от имени администратора
- Теперь выполните одно за другим следующее: ipconfig / flushdns ipconfig / release ipconfig / RenewОчистить кеш DNS
- Затем выйдите из командной строки и проверьте, решена ли проблема исключения Java.
Если проблема не исчезнет, проверьте, решает ли изменение DNS-сервера (например, Google DNS) проблему внутреннего исключения.
Решение 3. Отключите пакет ресурсов сервера
Пакеты ресурсов позволяют игрокам выполнять множество настроек (например, текстуры, музыку, модели, тесты на всплески и т. Д.), Но эта настройка может препятствовать обмену данными между клиентом и сервером и, таким образом, вызывать проблему исключения ввода-вывода. В этом сценарии отключение пакета ресурсов сервера может решить проблему.
- Откройте программу запуска Minecraft и выберите «Многопользовательская игра».
- Затем выберите проблемный сервер и нажмите «Изменить».Отредактируйте свойства сервера Minecraft
- Теперь нажмите Server Resource Packs, чтобы установить его в Disabled (если он включен), и нажмите Done.Отключить серверные пакеты ресурсов в Minecraft
- Затем проверьте, очищена ли программа запуска от проблемы Java.io.
Решение 4. Удалите конфликтующие приложения.
- Щелкните правой кнопкой мыши Windows и откройте «Приложения и компоненты».
- Теперь нажмите LogMeIn Hamachi, чтобы развернуть его, а затем нажмите Удалить.Удалить Hamachi
- Затем следуйте инструкциям по удалению Hamachi и перезагрузите компьютер.
- После перезагрузки проверьте, решена ли проблема IOexception.
Решение 5.Уменьшите расстояние отрисовки в настройках Minecraft
Проблема с внутренним исключением может возникнуть, если Minecraft не может отобразить все видеоблоки сразу (из-за низкой скорости интернета). В этом контексте уменьшение расстояния рендеринга в настройках Minecraft до минимально возможного может решить проблему.
- Откройте Minecraft Launcher и откройте его Параметры (также рекомендуется уменьшить расстояние отрисовки в настройках сервера, если это возможно).Откройте параметры Minecraft
- Теперь выберите «Настройки видео» и сдвиньте расстояние рендеринга до минимально возможного (например, до 2).Откройте настройки видео Minecraft
- Затем проверьте, решена ли проблема с Java.io. Если да, то вы можете увеличить расстояние рендеринга на единицу, пока не достигнете желаемого расстояния рендеринга.Установите расстояние рендеринга на 2 фрагмента в Minecraft
Решение 6. Измените настройки Java.
Ошибка Java.io может возникнуть, если установка Java в вашей системе настроена неправильно. В этом контексте изменение настроек Java (например, включение собственной песочницы) может решить проблему. Но прежде чем продолжить, убедитесь, что у вас есть только одна установка Java.
Обновите Java до последней сборки
- Щелкните Windows, введите: Configure Java и затем откройте его.Откройте Настроить Java
- Теперь перейдите на вкладку «Обновить» и нажмите кнопку «Обновить сейчас».Нажмите «Обновить Java» на вкладке «Обновить».
- Если доступно обновление, примените обновление Java и проверьте, решена ли проблема с внутренним исключением.
Включить собственную песочницу
Отредактируйте путь Java в настройках программы запуска
- Щелкните правой кнопкой мыши Windows и откройте «Выполнить».
- Теперь перейдите по следующему пути: Program Files (x86) Открытие программных файлов (x86) из запуска
- Затем откройте папку Java и перейдите к последней версии установки Java (например, папку jre1.8.0_291).
- Теперь откройте папку Bin и скопируйте адрес из адресной строки.Скопируйте путь Java
- Затем откройте программу запуска Minecraft и выберите «Редактировать профиль».
- Теперь в разделе «Параметры Java» («Дополнительно») установите флажок «Исполняемый файл».
- Затем вставьте адрес (скопированный на шаге 4) в Bin, чтобы путь должен был выглядеть примерно так: C: Program Files (x86) Java jre1.8.0_291 bin javaw.exeОтредактируйте путь Java в редакторе профиля Minecraft
- Теперь примените свои изменения и проверьте, решена ли проблема с внутренним исключением.
Если проблема не исчезнет, проверьте, решает ли переустановка Java проблему исключения ввода-вывода.
Решение 7. Ремонт / переустановка Minecraft
Проблема с Java.io может возникнуть, если установка Minecraft повреждена. В этом контексте его ремонт или переустановка могут решить проблему.
- Щелкните Windows, введите: Панель управления и запустите ее.Открыть панель управления
- Теперь откройте Удаление программы и выберите Minecraft.Ремонт пусковой установки Minecraft
- Затем нажмите «Восстановить» и следуйте инструкциям по ремонту Minecraft.
- Теперь перезагрузите компьютер и проверьте, решена ли проблема IOexception.
- Если нет, удалите Minecraft и Java (обязательно сделайте резервную копию самого необходимого).
- Теперь перезагрузите компьютер и после перезагрузки щелкните правой кнопкой мыши Windows и выберите «Выполнить».
- Затем перейдите по следующему пути (скопируйте и вставьте адрес): AppDataОткрыть данные приложения через окно запуска
- Теперь откройте каждый каталог (Local, LocalLow и Roaming) один за другим и удалите в них папки Minecraft.Удалите каталоги Minecraft в папках AppData.
- Затем загрузите последние версии Java и Minecraft.
- Затем установите Java от имени администратора и перезагрузите компьютер.
- После перезагрузки установите Minecraft от имени администратора и проверьте, решена ли проблема с внутренним исключением.
Решение 8.Измените настройки, связанные с сетью
Minecraft может отображать проблему внутреннего исключения, если сетевые настройки вашей системы не настроены должным образом (или ваш интернет-провайдер блокирует доступ к ресурсу, необходимому для работы Minecraft). В этом случае изменение настроек сети (или попытка использования другой сети / VPN) может решить проблему.
Попробуйте другую сеть или VPN
- Отключите вашу систему от текущей сети и подключитесь к другой сети, например, к точке доступа вашего телефона, чтобы проверить, решена ли проблема IOexception. Вы также можете проверить это с помощью VPN. Также будет хорошей идеей переключиться между подключением Wi-Fi и Ethernet.
- Если проблема не исчезнет, подключите систему к Интернету напрямую без маршрутизатора, чтобы исключить, не вызывает ли проблема его конфигурация.
Отключите ускорение NAT в настройках маршрутизатора.
- Запустите веб-браузер и перейдите на страницу управления маршрутизатором.
- Теперь выберите LAN (на левой панели) и отключите аппаратное ускорение на вкладке Switch Control. Если аппаратное ускорение (функция фирменного маршрутизатора Asus) не отображается, ищите его с другими названиями, такими как CTF (сквозная пересылка) и FA (ускоритель потока).Отключить ускорение NAT
- Затем примените свои изменения и проверьте, решена ли проблема с внутренним исключением.
Решение 9. Отредактируйте настройки брандмауэра
Вы можете столкнуться с проблемой внутреннего исключения, если брандмауэр вашей системы блокирует доступ к ресурсу, необходимому для работы Minecraft. В этом контексте изменение настроек брандмауэра (например, разрешение Java ™ Platform SE Binary в настройках брандмауэра) может решить проблему. Прежде чем продолжить, рекомендуется проверить, решает ли проблему временное отключение брандмауэра вашей системы. Для иллюстрации мы рассмотрим процесс для брандмауэра Защитника Windows.
Установите Java (TM) Platform SE на Private в настройках брандмауэра
- Щелкните Windows, введите: Разрешить приложение через брандмауэр Windows и откройте его.Откройте Разрешить приложение через брандмауэр Windows
- Теперь нажмите «Изменить настройки» и в списке приложений найдите Java (TM) Platform SE Binary. Если его нет, нажмите «Разрешить другое приложение» и перейдите в каталог установки Java (обычно это каталог Java с папками Program Files и Program Files (X86)) и дважды щелкните Javaw.exe.Установите Java (TM) Platform SE Binary в положение Private
- Затем снимите отметку с опции Public и отметьте опцию Private для всех двоичных процессов Java (TM) Platform SE.
- Теперь выберите Java (TM) Platform SE Binary и нажмите Details.
- Затем откройте «Тип сети» и установите флажок «Частная».
- Теперь примените ваши изменения и перезагрузите компьютер.
- После перезагрузки проверьте, решена ли проблема IOexception.
Разрешить Minecraft через брандмауэр
- Щелкните Windows, введите: Брандмауэр и откройте брандмауэр Защитника Windows.Откройте брандмауэр Защитника Windows.
- Теперь убедитесь, что правила для входящего и исходящего трафика, связанные с Minecraft, не установлены для блокировки подключения.Разрешить подключение Minecraft через брандмауэр Защитника Windows
- Затем выберите «Правила для входящих подключений» и нажмите «Новое правило».Создать новое правило для входящих подключений
- Теперь выберите «Программа» и нажмите «Далее».Выберите программу в окне нового правила
- Затем нажмите «Обзор» и перейдите в каталог установки Minecraft.Откройте Обзор и перейдите в каталог установки Minecraft.
- Теперь дважды щелкните Minecraft.exe и выберите Разрешить подключение.
- Затем нажмите «Далее» и выберите все три профиля (например, «Общедоступный», «Частный» и «Доменный»).
- Теперь назовите правило и нажмите Готово.
- Затем повторите то же самое для правила исходящего трафика и перезагрузите компьютер.
- После перезагрузки проверьте, решена ли проблема с Java.io.
Если проблема не устранена, проверьте, разрешает ли подключение Minecraft через брандмауэр маршрутизатора (если есть) проблему (особенно, если он использует некоторую функцию автоблокировки). Если это не помогло, проверьте, не ограничивает ли родительский контроль доступ Minecraft. Кроме того, будет хорошей идеей убедиться, что порты правильно перенаправлены в брандмауэре системы / маршрутизатора в соответствии с требованиями Minecraft.
Если проблема не исчезнет, проверьте, решает ли проблему выделение для Minecraft дополнительной оперативной памяти. Если это не помогло, вы можете связаться с администраторами сервера, чтобы удалить данные вашего игрока или проверить наличие проблем на стороне сервера. Если проблема до сих пор не решена, вам, возможно, придется выполнить сброс настроек вашего ПК до заводских настроек, и если это не помогло, проверьте свою систему (особенно жесткий диск и сетевую / Wi-Fi-карту) на наличие аппаратной ошибки. .
Читайте также: