会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132681个问题
JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 3287楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 3288楼

xml:

<?xml version="1.0" encoding="UTF-8"?>
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="book.xsd">
    <book id="1001">
        <name>java开发实战</name>
        <author>张小三</author>
        <price>98.5</price>

    </book>
    <book id="1002">
        <name>mysql从删库到跑路</name>
        <author>王一一</author>
        <price>89.7</price>

    </book>
</books>

xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" >
    <xs:element name="books">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="book" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="name" type="xs:string"></xs:element>
                            <xs:element name="author" type="xs:string"></xs:element>
                            <xs:element name="price" type="xs:double"></xs:element>
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:positiveInteger" use="required"></xs:attribute>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Test:

package com.bjsxt;

import org.xml.sax.SAXException;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import java.io.File;
import java.io.IOException;

public class Test {
    public static void main(String[] args) throws SAXException {
        //创建SchemaFactory工厂
        SchemaFactory sch = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema-instance");
        //验证文件对象
        File schemaFile = new File("book.xsd");
        //利用SchemaFactory工厂对象,接收验证的文件对象,生成Schema对象
        Schema schema = sch.newSchema(schemaFile);
        //产生对此Schema的验证器
        Validator validator = schema.newValidator();
        //要验证的数据(准备数据源)
        Source source = new StreamSource("book.xml");
        //开始验证
        try {
            validator.validate(source);
            System.out.println("成功");
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("失败");
        }
    }
}

文件位置:

image.png

运行时的错误

image.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 3289楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/智能电话本项目实战 3291楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 3292楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 3296楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 3297楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 3299楼

老师,以下是我的代码,请问为什么会报错?请问是什么错误?

package com.bjsxt.url;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;

public class TestURL2 {
	public static void main(String[] args) throws IOException {
		/**网络爬虫
		 * (1)从网络上获取资源 www.baidu.com
		 * (2)存储到本地
		 * */
		//(1)创建URL对象
		URL url=new URL("https://www.baidu.com");//主页资源
		//(2)获取字节输入流
		InputStream is=url.openStream();
		//(3)缓冲流
		BufferedReader br=new BufferedReader(new InputStreamReader(is, "utf-8"));
		//(4)存储到本地
		BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("index.html"),"utf-8"));
		//(5)边读边写
		String line=null;
		while((line=br.readLine())!=null){
			bw.write(line);
			bw.newLine();
			bw.flush();
		}
		//(6)关闭流
		bw.close();
		br.close();
	
		
	}
}

报错内容:

Exception in thread "main" javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:320)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:263)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:258)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:641)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:460)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:360)
	at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:392)
	at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:441)
	at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:419)
	at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:177)
	at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:164)
	at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1180)
	at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1091)
	at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:402)
	at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567)
	at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:187)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1581)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1509)
	at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:246)
	at java.base/java.net.URL.openStream(URL.java:1140)
	at com.bjsxt.url.TestURL2.main(TestURL2.java:21)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:384)
	at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:289)
	at java.base/sun.security.validator.Validator.validate(Validator.java:264)
	at java.base/sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:321)
	at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:221)
	at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:129)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:625)
	... 17 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
	at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
	at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)
	at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:379)
	... 23 more

请老师看一下,代码应该没问题

JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 3300楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637