Java.Net.SocketException 수정: Java에서 권한 거부

Sheeraz Gul 2023년6월20일
  1. Java에서 java.net.SocketException: 권한 거부 오류의 원인
  2. Java에서 java.net.SocketException: 권한 거부 오류 수정
Java.Net.SocketException 수정: Java에서 권한 거부

이 자습서는 Java의 java.net.SocketException: 권한 거부 오류를 보여줍니다.

Java에서 java.net.SocketException: 권한 거부 오류의 원인

SocketException은 일반적으로 네트워크 연결에 문제가 있을 때 발생합니다. 권한 거부, 연결 재설정 또는 기타 항목일 수 있습니다.

java.net.SocketException: 권한 거부 오류는 네트워크에서 특정 포트에 연결할 수 있는 권한이 없을 때 발생합니다. 다른 플랫폼에서 네트워크 설정을 연결하거나 구성하는 동안 오류가 발생할 수 있습니다.

java.net.SocketException: 권한 거부 오류는 Tomcat 또는 OpenShift와 같은 모든 서버 유형에서 발생할 수 있습니다.

다음은 java.net.SocketException: 권한 거부 오류의 주요 원인입니다.

  1. 운영 체제가 특정 포트 번호를 허용하지 않는 경우.
  2. 바이러스 백신 또는 방화벽이 특정 네트워크에 대한 연결을 중지합니다.
  3. 때때로 이전 버전의 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 미만의 루트를 사용하는 것을 허용하지 않기 때문입니다. 따라서 권한 문제가 됩니다.

이제 이 문제에 대한 해결책은 다음과 같습니다.

  1. 가장 좋은 해결책은 루트 계정을 사용하여 Tomcat 서버를 시작하는 것입니다.
  2. Linux에서 1024 미만의 포트 번호를 허용하지 않는 경우 이 번호보다 큰 포트를 사용하십시오. 포트 번호가 URL 요청에 추가됩니다.

마찬가지로 openshift 서버를 사용하는 동안 java.net.SocketException: Permission denied 오류가 발생할 수 있습니다. 그 이유는 방화벽이나 바이러스 백신이 이를 막고 있거나 사용 중인 Java 버전이 호환되지 않기 때문일 수 있습니다.

이에 대한 가능한 해결책은 다음과 같습니다.

  1. 바이러스 백신 및 방화벽을 중지합니다. 또는 그들이 서버를 차단하고 있지 않은지 확인하십시오.

  2. Java 8 이상 버전을 사용하십시오. 또는 Java 7을 사용하여 실행하고 연결할 수 있도록 애플리케이션에 다음 VM 인수를 입력합니다.

    -Djava.net.preferIPv4Stack=true
    
  3. 특정 요구 사항이 있는 경우 타사 라이브러리 또는 패키지를 확인하십시오. 그 중 일부는 java.net.SocketException: 권한 거부 오류를 발생시킵니다.

작가: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

관련 문장 - Java Error