Устранение неполадок «java.lang.SecurityException: разрешение отклонено (отсутствует разрешение INTERNET?)» в приложениях Java

При разработке Java-приложений, требующих подключения к сети, вы можете столкнуться с ошибкой «java.lang.SecurityException: Permission Dened (отсутствует разрешение INTERNET?)». Это исключение генерируется, когда ваше приложение не имеет необходимого разрешения на доступ к Интернету. В этой статье блога мы рассмотрим различные способы решения этой проблемы на примерах кода.

  1. Добавьте разрешение INTERNET в AndroidManifest.xml:
    Если вы разрабатываете приложение для Android, вам необходимо убедиться, что разрешение INTERNET объявлено в файле AndroidManifest.xml. Откройте файл и добавьте в тег следующую строку:
<uses-permission android:name="android.permission.INTERNET" />
  1. Проверьте разрешения во время выполнения (Android):
    Начиная с Android 6.0 (уровень API 23), вы должны запрашивать некоторые разрешения во время выполнения. Помимо добавления разрешения INTERNET в манифест, вам также следует проверить и запросить разрешение во время выполнения. Вот пример:
if (ContextCompat.checkSelfPermission(context, Manifest.permission.INTERNET)
        != PackageManager.PERMISSION_GRANTED) {
    // Permission is not granted, request it
    ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.INTERNET}, requestCode);
}
  1. Проверьте политики диспетчера безопасности.
    Если вы запускаете приложение Java с включенным диспетчером безопасности, убедитесь, что файл политики разрешает доступ к Интернету. Файл политики обычно называется java.policyи находится в каталоге JRE/lib/security. Откройте файл и добавьте следующую строку:
permission java.net.SocketPermission "*", "connect, resolve";
  1. Проверьте настройки брандмауэра.
    Убедитесь, что настройки брандмауэра разрешают приложению Java доступ к Интернету. Если ваше приложение заблокировано брандмауэром, это приведет к ошибке «java.lang.SecurityException: Permission Dened». Проверьте конфигурацию брандмауэра и создайте исключение для вашего Java-приложения.

  2. Запуск от имени администратора (Windows):
    Если вы запускаете приложение Java на компьютере под управлением Windows, попробуйте запустить его с правами администратора. Щелкните правой кнопкой мыши исполняемый файл или пакетный скрипт вашего приложения и выберите «Запуск от имени администратора». Этот шаг гарантирует, что у приложения есть достаточные разрешения для доступа в Интернет.

Ошибка «java.lang.SecurityException: Разрешение отклонено (отсутствует разрешение INTERNET?)» обычно возникает, когда Java-приложению не хватает необходимых разрешений для доступа в Интернет. Следуя методам, описанным в этой статье, вы сможете эффективно устранить и решить эту проблему. Не забудьте добавить разрешение ИНТЕРНЕТ в файл AndroidManifest.xml, обработать разрешения во время выполнения (для Android), проверить политики Security Manager, проверить настройки брандмауэра и при необходимости запустить приложение с соответствующими привилегиями.

Устранив эти потенциальные причины, вы можете гарантировать, что ваше Java-приложение сможет получить доступ к Интернету без возникновения исключений безопасности.