При разработке Java-приложений, требующих подключения к сети, вы можете столкнуться с ошибкой «java.lang.SecurityException: Permission Dened (отсутствует разрешение INTERNET?)». Это исключение генерируется, когда ваше приложение не имеет необходимого разрешения на доступ к Интернету. В этой статье блога мы рассмотрим различные способы решения этой проблемы на примерах кода.
- Добавьте разрешение INTERNET в AndroidManifest.xml:
Если вы разрабатываете приложение для Android, вам необходимо убедиться, что разрешение INTERNET объявлено в файле AndroidManifest.xml. Откройте файл и добавьте в тегследующую строку:
<uses-permission android:name="android.permission.INTERNET" />
- Проверьте разрешения во время выполнения (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);
}
- Проверьте политики диспетчера безопасности.
Если вы запускаете приложение Java с включенным диспетчером безопасности, убедитесь, что файл политики разрешает доступ к Интернету. Файл политики обычно называетсяjava.policyи находится в каталогеJRE/lib/security. Откройте файл и добавьте следующую строку:
permission java.net.SocketPermission "*", "connect, resolve";
-
Проверьте настройки брандмауэра.
Убедитесь, что настройки брандмауэра разрешают приложению Java доступ к Интернету. Если ваше приложение заблокировано брандмауэром, это приведет к ошибке «java.lang.SecurityException: Permission Dened». Проверьте конфигурацию брандмауэра и создайте исключение для вашего Java-приложения. -
Запуск от имени администратора (Windows):
Если вы запускаете приложение Java на компьютере под управлением Windows, попробуйте запустить его с правами администратора. Щелкните правой кнопкой мыши исполняемый файл или пакетный скрипт вашего приложения и выберите «Запуск от имени администратора». Этот шаг гарантирует, что у приложения есть достаточные разрешения для доступа в Интернет.
Ошибка «java.lang.SecurityException: Разрешение отклонено (отсутствует разрешение INTERNET?)» обычно возникает, когда Java-приложению не хватает необходимых разрешений для доступа в Интернет. Следуя методам, описанным в этой статье, вы сможете эффективно устранить и решить эту проблему. Не забудьте добавить разрешение ИНТЕРНЕТ в файл AndroidManifest.xml, обработать разрешения во время выполнения (для Android), проверить политики Security Manager, проверить настройки брандмауэра и при необходимости запустить приложение с соответствующими привилегиями.
Устранив эти потенциальные причины, вы можете гарантировать, что ваше Java-приложение сможет получить доступ к Интернету без возникновения исключений безопасности.