Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ssl地址的URL打开连接引发断言异常_Java_Ssl - Fatal编程技术网

Java ssl地址的URL打开连接引发断言异常

Java ssl地址的URL打开连接引发断言异常,java,ssl,Java,Ssl,我使用下面这样的代码 new URL("https://google.com").openConnection(); 代码在JDK 7中运行良好,但在我使用JDK 8时会引发如下异常 Exception in thread "Goole" java.lang.AssertionError: Default directory is not an absolute path at sun.nio.fs.WindowsFileSystem.<init>(WindowsFi

我使用下面这样的代码

  new URL("https://google.com").openConnection();
代码在JDK 7中运行良好,但在我使用JDK 8时会引发如下异常

 Exception in thread "Goole" java.lang.AssertionError: Default directory is not an absolute path
    at sun.nio.fs.WindowsFileSystem.<init>(WindowsFileSystem.java:61)
    at sun.nio.fs.WindowsFileSystemProvider.<init>(WindowsFileSystemProvider.java:53)
线程“Goole”java.lang.AssertionError中的异常:默认目录不是绝对路径 位于sun.nio.fs.WindowsFileSystem.(windowsfystem.java:61) 位于sun.nio.fs.WindowsFileSystemProvider。(WindowsFileSystemProvider.java:53)
我不理解打开SSL连接和文件系统之间的关系。所以我很困惑。有什么线索吗?

一些研究表明,如果user.dir被设置为相对路径,那么就会抛出前面提到的异常。所以我将user.dir值改为绝对路径,解决了这个问题。以下是满足好奇心的完整堆栈:

 Exception in thread "Goole" java.lang.AssertionError: Default directory is not an absolute path
at sun.nio.fs.WindowsFileSystem.<init>(WindowsFileSystem.java:61)
at sun.nio.fs.WindowsFileSystemProvider.<init>(WindowsFileSystemProvider.java:53)
at sun.nio.fs.DefaultFileSystemProvider.create(DefaultFileSystemProvider.java:36)
at java.nio.file.FileSystems$DefaultFileSystemHolder.getDefaultProvider(FileSystems.java:108)
at java.nio.file.FileSystems$DefaultFileSystemHolder.access$000(FileSystems.java:89)
at java.nio.file.FileSystems$DefaultFileSystemHolder$1.run(FileSystems.java:98)
at java.nio.file.FileSystems$DefaultFileSystemHolder$1.run(FileSystems.java:96)
at java.security.AccessController.doPrivileged(Native Method)
at java.nio.file.FileSystems$DefaultFileSystemHolder.defaultFileSystem(FileSystems.java:96)
at java.nio.file.FileSystems$DefaultFileSystemHolder.<clinit>(FileSystems.java:90)
at java.nio.file.FileSystems.getDefault(FileSystems.java:176)
at java.io.File.toPath(File.java:2234)
at sun.security.provider.SeedGenerator$1.run(SeedGenerator.java:190)
at sun.security.provider.SeedGenerator$1.run(SeedGenerator.java:168)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.provider.SeedGenerator.getSystemEntropy(SeedGenerator.java:168)
at sun.security.provider.SecureRandom$SeederHolder.<clinit>(SecureRandom.java:190)
at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:210)
at java.security.SecureRandom.nextBytes(SecureRandom.java:457)
at java.security.SecureRandom.next(SecureRandom.java:480)
at java.util.Random.nextInt(Random.java:329)
at sun.security.ssl.SSLContextImpl.engineInit(SSLContextImpl.java:114)
at sun.security.ssl.SSLContextImpl$DefaultSSLContext.<init>(SSLContextImpl.java:675)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at java.lang.Class.newInstance(Class.java:433)
at java.security.Provider$Service.newInstance(Provider.java:1593)
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:96)
at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:122)
at javax.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(HttpsURLConnection.java:332)
at javax.net.ssl.HttpsURLConnection.<init>(HttpsURLConnection.java:289)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.<init>(HttpsURLConnectionImpl.java:85)
at sun.net.www.protocol.https.Handler.openConnection(Handler.java:62)
at sun.net.www.protocol.https.Handler.openConnection(Handler.java:57)
at java.net.URL.openConnection(URL.java:972)
线程“Goole”java.lang.AssertionError中的异常:默认目录不是绝对路径 位于sun.nio.fs.WindowsFileSystem.(windowsfystem.java:61) 位于sun.nio.fs.WindowsFileSystemProvider。(WindowsFileSystemProvider.java:53) 位于sun.nio.fs.DefaultFileSystemProvider.create(DefaultFileSystemProvider.java:36) 位于java.nio.file.FileSystems$DefaultFileSystemHolder.getDefaultProvider(FileSystems.java:108) 位于java.nio.file.FileSystems$DefaultFileSystemHolder.access$000(FileSystems.java:89) 位于java.nio.file.FileSystems$DefaultFileSystemHolder$1.run(FileSystems.java:98) 位于java.nio.file.FileSystems$DefaultFileSystemHolder$1.run(FileSystems.java:96) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.nio.file.FileSystems$DefaultFileSystemHolder.defaultFileSystem(FileSystems.java:96) 位于java.nio.file.FileSystems$DefaultFileSystemHolder。(FileSystems.java:90) 位于java.nio.file.FileSystems.getDefault(FileSystems.java:176) 位于java.io.File.toPath(File.java:2234) 位于sun.security.provider.SeedGenerator$1.run(SeedGenerator.java:190) 位于sun.security.provider.SeedGenerator$1.run(SeedGenerator.java:168) 位于java.security.AccessController.doPrivileged(本机方法) 位于sun.security.provider.SeedGenerator.getSystemEntropy(SeedGenerator.java:168) 位于sun.security.provider.SecureRandom$SeederHolder。(SecureRandom.java:190) 位于sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:210) 位于java.security.SecureRandom.nextBytes(SecureRandom.java:457) 在java.security.SecureRandom.next(SecureRandom.java:480) 位于java.util.Random.nextInt(Random.java:329) 位于sun.security.ssl.SSLContextImpl.engineInit(SSLContextImpl.java:114) 位于sun.security.ssl.SSLContextImpl$DefaultSSLContext。(SSLContextImpl.java:675) 位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 位于java.lang.reflect.Constructor.newInstance(Constructor.java:408) 位于java.lang.Class.newInstance(Class.java:433) 位于java.security.Provider$Service.newInstance(Provider.java:1593) 位于sun.security.jca.GetInstance.GetInstance(GetInstance.java:236) 位于sun.security.jca.GetInstance.GetInstance(GetInstance.java:164) 位于javax.net.ssl.SSLContext.getInstance(SSLContext.java:156) 位于javax.net.ssl.SSLContext.getDefault(SSLContext.java:96) 位于javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:122) 位于javax.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(HttpsURLConnection.java:332) 位于javax.net.ssl.HttpsURLConnection(HttpsURLConnection.java:289) http.HttpsURLConnectionImpl.(HttpsURLConnectionImpl.java:85) 位于sun.net.www.protocol.https.Handler.openConnection(Handler.java:62) 位于sun.net.www.protocol.https.Handler.openConnection(Handler.java:57) 位于java.net.URL.openConnection(URL.java:972)
向我们展示更多堆栈跟踪。这真的来自于sun.nio.fs.WindowsFileSystem.(WindowsFileSystem.java:61)的
openConnection()
你到底是如何将
user.dir
设置为相对路径的?我想是System.setProperty(“user.dir”,…)。我认为SSL连接无论如何都不应该依赖于user.dir属性集。至少它在Java7中工作。