次の簡単なプログラム:Googleのクラウドプラットフォーム:起動できませんJavaの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);
}
}
}
GoogleのクラウドプラットフォームによってホストされているのDebian VMの内部で動作しません(GoogleのCompute Engineの - 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のクラウドで443のサーバーを許可するにはどうすればよいですか?私は、ファイアウォールを開くしようとしたが、それは(それは別の問題だから、それは本当に:-(持つべきではないということ)動作しませんでした
Javaのバージョンがある(私はこの問題を疑うが):。
をLinux/Unixで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'するのが助かりますが、これは唯一の/究極の回答かもしれませんが、特権の昇格なしで行うことができますか? –