0
我试图建立在Ubuntu上一个简单的Java SSL服务器,虽然当我运行它,它编译没有警告,我得到的gcc这些错误:错误的createServerSocket
java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext)
at javax.net.ssl.DefaultSSLServerSocketFactory.throwException(SSLServerSocketFactory.java:159)
at javax.net.ssl.DefaultSSLServerSocketFactory.createServerSocket(SSLServerSocketFactory.java:171)
at Server.main(Server.java:15)
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext)
at java.security.Provider$Service.newInstance(Provider.java:1262)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:236)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:164)
at javax.net.ssl.SSLContext.getInstance(SSLContext.java:156)
at javax.net.ssl.SSLContext.getDefault(SSLContext.java:97)
at javax.net.ssl.SSLServerSocketFactory.getDefault(SSLServerSocketFactory.java:113)
at Server.main(Server.java:14)
Caused by: java.security.PrivilegedActionException: java.io.FileNotFoundException: server.ks (No such file or directory)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.ssl.SSLContextImpl$DefaultSSLContext.getDefaultKeyManager(SSLContextImpl.java:571)
at sun.security.ssl.SSLContextImpl$DefaultSSLContext.<init>(SSLContextImpl.java:486)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at java.security.Provider$Service.newInstance(Provider.java:1238)
... 6 more
Caused by: java.io.FileNotFoundException: server.ks (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:97)
at sun.security.ssl.SSLContextImpl$DefaultSSLContext$2.run(SSLContextImpl.java:574)
at sun.security.ssl.SSLContextImpl$DefaultSSLContext$2.run(SSLContextImpl.java:572)
... 16 more
我认为原因是线路的createServerSocket在下面的代码中,但相当长的时间后,我无法猜测为什么。有任何想法吗?这是代码的一部分:
SSLServerSocketFactory sssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
SSLServerSocket ss = (SSLServerSocket) sssf.createServerSocket(4444);
SSLSocket s = (SSLSocket) ss.accept();
BufferedReader buff = new BufferedReader (new InputStreamReader(s.getInputStream()));
String line;
Thread t = new Thread(new Write(s));
t.start();
非常感谢人! – user1031431 2012-03-21 17:18:05