HOWTO · Java

Solucione Java.Net.SocketException: Permiso denegado en Java

Este tutorial demuestra java.net.SocketException: error de permiso denegado en Java.

En esta página

Este tutorial demuestra el error java.net.SocketException: Permiso denegado en Java.

Causas del error java.net.SocketException: Permiso denegado en Java

La SocketException suele ocurrir cuando hay un problema con la conexión de red. Puede ser Permiso denegado, Restablecer conexión, o cualquier otra cosa.

El error java.net.SocketException: Permiso denegado ocurre cuando no hay permiso de la red para conectarse con un determinado puerto. El error puede ocurrir al conectar o configurar los ajustes de red en diferentes plataformas.

El error java.net.SocketException: Permiso denegado puede ocurrir en cualquier tipo de servidor como Tomcat u OpenShift.

Estas son las razones principales del error java.net.SocketException: Permiso denegado:

  1. Cuando el sistema operativo no permite un número de puerto en particular.
  2. El antivirus o cortafuegos detiene la conexión a una determinada red.
  3. A veces, un problema con la versión anterior de Java.

Solucione el error java.net.SocketException: Permiso denegado en Java

Por ejemplo, al configurar el certificado HTTPS para el servidor Tomcat, puede ocurrir el error java.net.SocketException: Permiso denegado al iniciar el servidor:

Caused by: java.net.SocketException: Permission denied
                at sun.nio.ch.Net.bind0(Native Method)
                at sun.nio.ch.Net.bind(Net.java:438)
                at sun.nio.ch.Net.bind(Net.java:430)
                at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:225)
                at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
                at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:221)
                at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1118)
                at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:223)
                at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:587)
                at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:74)
                at org.apache.catalina.connector.Connector.initInternal(Connector.java:1058)
                ... 13 more

El motivo de este error es que el sistema operativo está deteniendo la conexión. Debido a que el sistema Linux no permite que los usuarios que no sean root usen la raíz menos de 1024; por lo tanto, se convierte en un problema de permisos.

Ahora bien, las soluciones a este problema pueden ser:

  1. La mejor solución es usar la cuenta raíz para iniciar el servidor Tomcat.
  2. Si Linux no permite números de puerto inferiores a 1024, utilice un puerto superior a este número. El número de puerto se agregará a la solicitud de URL.

De manera similar, al usar el servidor openshift, puede ocurrir el mismo error java.net.SocketException: Permiso denegado. Y la razón podría ser que el firewall o el antivirus lo estén deteniendo o que la versión de Java que está utilizando no sea compatible.

La posible solución para esto puede ser:

  1. Detenga el antivirus y el firewall. O comprueba que no estén bloqueando el servidor.

  2. Use Java 8 o versiones superiores. O coloque los siguientes argumentos de VM en su aplicación para poder ejecutar y conectarse usando Java 7:

    -Djava.net.preferIPv4Stack=true
    
  3. Consulte las bibliotecas o paquetes de terceros si tienen algunos requisitos específicos. Algunos de ellos también causarán el error java.net.SocketException: Permiso denegado.