HOWTO · Java
Java.Net.SocketException 수정: Java에서 권한 거부
이 자습서는 java.net.SocketException: Java의 권한 거부 오류를 보여줍니다.
이 페이지의 내용
이 자습서는 Java의 java.net.SocketException: 권한 거부 오류를 보여줍니다.
Java에서 java.net.SocketException: 권한 거부 오류의 원인
SocketException은 일반적으로 네트워크 연결에 문제가 있을 때 발생합니다. 권한 거부, 연결 재설정 또는 기타 항목일 수 있습니다.
java.net.SocketException: 권한 거부 오류는 네트워크에서 특정 포트에 연결할 수 있는 권한이 없을 때 발생합니다. 다른 플랫폼에서 네트워크 설정을 연결하거나 구성하는 동안 오류가 발생할 수 있습니다.
java.net.SocketException: 권한 거부 오류는 Tomcat 또는 OpenShift와 같은 모든 서버 유형에서 발생할 수 있습니다.
다음은 java.net.SocketException: 권한 거부 오류의 주요 원인입니다.
- 운영 체제가 특정 포트 번호를 허용하지 않는 경우.
- 바이러스 백신 또는 방화벽이 특정 네트워크에 대한 연결을 중지합니다.
- 때때로 이전 버전의 Java에 문제가 있습니다.
Java에서 java.net.SocketException: 권한 거부 오류 수정
예를 들어 Tomcat 서버에 대한 HTTPS 인증서를 구성하는 동안 서버를 시작하는 동안 java.net.SocketException: 권한 거부됨 오류가 발생할 수 있습니다.
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
이 오류의 원인은 운영 체제가 연결을 중지하고 있기 때문입니다. Linux 시스템은 루트가 아닌 사용자가 1024 미만의 루트를 사용하는 것을 허용하지 않기 때문입니다. 따라서 권한 문제가 됩니다.
이제 이 문제에 대한 해결책은 다음과 같습니다.
- 가장 좋은 해결책은 루트 계정을 사용하여 Tomcat 서버를 시작하는 것입니다.
- Linux에서 1024 미만의 포트 번호를 허용하지 않는 경우 이 번호보다 큰 포트를 사용하십시오. 포트 번호가 URL 요청에 추가됩니다.
마찬가지로 openshift 서버를 사용하는 동안 java.net.SocketException: Permission denied 오류가 발생할 수 있습니다. 그 이유는 방화벽이나 바이러스 백신이 이를 막고 있거나 사용 중인 Java 버전이 호환되지 않기 때문일 수 있습니다.
이에 대한 가능한 해결책은 다음과 같습니다.
-
바이러스 백신 및 방화벽을 중지합니다. 또는 그들이 서버를 차단하고 있지 않은지 확인하십시오.
-
Java 8 이상 버전을 사용하십시오. 또는 Java 7을 사용하여 실행하고 연결할 수 있도록 애플리케이션에 다음 VM 인수를 입력합니다.
-Djava.net.preferIPv4Stack=true -
특정 요구 사항이 있는 경우 타사 라이브러리 또는 패키지를 확인하십시오. 그 중 일부는
java.net.SocketException: 권한 거부오류를 발생시킵니다.