다음의 간단한 프로그램 :구글 클라우드 플랫폼 : 시작할 수 없습니다 자바 HTTPS 서버
import com.sun.net.httpserver.HttpsServer;
import java.net.InetSocketAddress;
class SimpleServer {
public static void main(String[] pArgs) {
try {
HttpsServer s = HttpsServer.create(new InetSocketAddress(443), 0);
System.out.println(" " + s);
} catch (Exception pE) {
throw new RuntimeException("Could not create HTTPS server", pE);
}
}
}
구글 클라우드 플랫폼에 의해 호스팅 데비안 VM 내에서 작동하지 않습니다 (구글 컴퓨 트 엔진 -의 IaaS) :
Exception in thread "main" java.lang.RuntimeException: Could not create HTTPS server
at SimpleServer.main(SimpleServer.java:10)
Caused by: java.net.SocketException: Permission denied
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at sun.net.httpserver.ServerImpl.<init>(ServerImpl.java:100)
at sun.net.httpserver.HttpsServerImpl.<init>(HttpsServerImpl.java:50)
at sun.net.httpserver.DefaultHttpServerProvider.createHttpsServer(DefaultHttpServerProvider.java:39)
at com.sun.net.httpserver.HttpsServer.create(HttpsServer.java:90)
at SimpleServer.main(SimpleServer.java:7)
이 예제는 Windows 바탕 화면에서 실행될 때와 443에서 다른 것으로 포트를 변경하는 경우에도 작동합니다. 그렇다면 Google Cloud에서 443 서버를 허용하려면 어떻게해야합니까? 나는 방화벽을 개방 시도했지만, 그 (그것은 별도의 문제이기 때문에 정말 :-(해야하지 않는 것이) 작동하지 않았다
Java 버전이다 (나는이 문제를 의심하지만).
을 리눅스/유닉스에 1024 아래openjdk version "1.8.0_141"
OpenJDK Runtime Environment (build 1.8.0_141-8u141-b15-1~deb9u1-b15)
OpenJDK 64-Bit Server VM (build 25.141-b15, mixed mode)
위의 프로그램을 'sudo'하는 것이 도움이되는 것처럼 보일 수 있으며 이는 유일한/궁극적 인 대답 일 수 있지만 권한 상승없이 수행 할 수 있습니까? –