会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132487个问题
JAVA 全系列/第八阶段:Linux入门到实战/Maven 22081楼
JAVA 全系列/第十一阶段:分布式RPC调用和分布式文件存储/FastDFS 22082楼

老师,帮忙看下这个报错是什么情况。

package crawler;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

import javax.lang.model.util.Elements;
import java.io.IOException;
import java.net.URL;

public class CrawlerDemo {
//    爬虫
public static void main(String[] args) {
try {
//使用Jsoup获取玩野HTML源文件,转为Document对象
    Document document = Jsoup.parse(new URL("https://www.163.com/dy/article/G8ELLBO30514R9OJ.html"),5000);
//    System.out.println(document);
//    通过Document对象,获取需要的Element对象
//获取图片内容
//        Elements element= (Elements) document.getElementsByAttributeValue("title","百度搜索");
//    System.out.println(element);
//      Elements headerEle= (Elements) document.select("post_side_mod");
      Elements a= (Elements) document.select("description");
//    System.out.println(headerEle);
    System.out.println(a);
//    获取Element 对象的数据

}catch (IOException e){
   e.printStackTrace();
}

}
}

输出:

"C:\Program Files\Java\jdk-12.0.1\bin\java.exe" --enable-preview "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3.2\lib\idea_rt.jar=54118:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\java\worksprce\Demo\out\production\Demo1;C:\java\worksprce\ Demo1\lib\jsoup-1.11.2.jar;C:\java\worksprce\ Demo1\lib\JsoupXpath-0.3.2.jar" crawler.CrawlerDemo

Exception in thread "main" java.lang.ClassCastException: class org.jsoup.select.Elements cannot be cast to class javax.lang.model.util.Elements (org.jsoup.select.Elements is in unnamed module of loader 'app'; javax.lang.model.util.Elements is in module java.compiler of loader 'platform')

at crawler.CrawlerDemo.main(CrawlerDemo.java:23)


Process finished with exit code 1


JAVA 全系列/第五阶段:JavaWeb开发/XML技术(旧) 22084楼

map.get(u)值返回为null,而不是我put的值。但是我用比较器进行比较,结果又是正常的。

public class TreeMapTest {
    public static void main(String[] args) {
        Map<Users,String> map = new TreeMap<>();
        Users u1 = new Users("小a",18);
        Users u2 = new Users("小b",5);
        Users u3 = new Users("小c",9);

        String value = map.put(u1,"a");
        System.out.println(value);
        System.out.println(map.get(u1));
        map.put(u2,"b");
        map.put(u3,"c");

        Set<Users> keys = map.keySet();
        for(Users u: keys){
            System.out.println(u+"--- "+map.get(u));
        }
    }
}


public class Users implements Comparable<Users>{
    private String uname;
    private int uage;

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public int getUage() {
        return uage;
    }

    public void setUage(int uage) {
        this.uage = uage;
    }

    public Users(String uname, int uage) {
        this.uname = uname;
        this.uage = uage;
    }

    public Users() {
    }


//如果大于返回1,小于返回-1 ,相等返回0
    @Override
    public int compareTo(Users o) {
        if(this.uage > o.uage){
            return 1;
        }else{
            return -1;
        }
    }

    @Override
    public String toString() {
        return "Users{" +
                "uname='" + uname + '\'' +
                ", uage=" + uage +
                '}';
    }
}

image.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 22086楼
JAVA 全系列/第十一阶段:分布式RPC调用和分布式文件存储/FastDFS 22087楼
JAVA 全系列/第十一阶段:分布式RPC调用和分布式文件存储/FastDFS 22088楼
JAVA 全系列/第一阶段:JAVA 快速入门/飞机大战小项目训练 22089楼

package com.bjsxt.ls.DuoXianCheng.线程并发;
/*
线程并发:生产者和消费者模型
定义一个做馒头和取馒头的类,中间有一个缓冲区。做好的馒头放入缓冲区,取馒头从缓冲区取。
假设缓冲区容量是10,那么当做了十个馒头的时候,做馒头线程就要停止(阻塞)。当缓冲区没有馒头的时候,取馒头线程就要停止(阻塞)。
但是当做馒头线程放入馒头的时候,就要用notify提醒取馒头线程,不要一直处于阻塞状态;
同样当取馒头线程拿馒头的时候,也要提醒做馒头线程要做馒头,不要一直处于阻塞状态;
*/

//定义馒头类
class ManTou{
    private int id;
    public ManTou(int id) {
        this.id = id;
    }
    public int getId() {
        return id;
    }
}

//定义缓冲区,用数组来存放馒头
class resitor{
    
    private ManTou[] arr =new ManTou[10]; //创建一个长度为10,类型为ManTou的数组
    private int index; //定义索引

    //定义做馒头方法
    //因为做馒头和取馒头都是对同样对象进行操作,所以这两个状态是要互斥,即同步的。所以要用synchronized使得这两个状态处于同步状态
    //synchronzied放在方法名上相当于将synchronized(this){}将方法体包裹起来。
    public synchronized void makeMantou(ManTou manTou){
        //用while做出判断,如果当数组满的时候,就要用wait方法,使得此线程进入阻塞状态,不再生产馒头了;
        while (this.index == this.arr.length){
            try {
                wait();    /*wait属于Object类只能用在synchronized块中。
                           此方法执行之后,在本方法所在的对象锁会被阻塞, 其他需要该对象锁的线程就可以继续运行了。*/
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }              //notify也属于Object类
        this.notify();//当放入馒头的时候,要用notify唤醒取馒头的线程,以防拿馒头线程处于阻塞状态 。
                     //该方法会唤醒处于等待状态队列中的一个线程
        this.arr[this.index]=manTou;
        index++;
    }

    //定义取馒头方法
    public synchronized ManTou takeMantou(){
        //用while判断,当索引为0,即缓冲区没有馒头的时候,就用wait阻塞此状态,不要再去取馒头了;
        while (this.index==0){
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        this.notify();//拿馒头的时候也要唤醒做馒头的线程,以防处于阻塞状态不做馒头了。
        this.index--;
        return this.arr[this.index];
    }
}


//创建做馒头线程
class makeThread extends Thread{
    private resitor r; //定义一个类型是resitor的变量r
    public makeThread(resitor r){
        this.r = r;
    }

    @Override
    public void run() {
        for (int i=1;i<11;i++){
            System.out.println("生成第"+i+"个馒头");
            ManTou manTou =new ManTou(i);
            this.r.push(manTou);
        }
    }
}

//创建取馒头线程
class takeThread extends Thread{
    private resitor r; //定义一个类型是resitor的变量r
    public takeThread(resitor r){
        this.r = r;
    }

    @Override
    public void run() {
        for (int i=1;i<11;i++){
            ManTou manTou =this.r.pop();
            System.out.println("拿走第"+i+"个馒头");
        }
    }
}

public class ProducerThread {
    public static void main(String[] args) {
        resitor tt =new resitor();
        new makeThread(tt).start();
        new takeThread(tt).start();
    }
}

QQ图片20210425162135.png

老师这是什么原因造成的?

JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 22090楼
JAVA 全系列/第十三阶段:分布式文件存储与数据缓存/MongoDB 22093楼
人工智能/第九阶段:机器学习-概率图模型(旧)/CRF算法 22094楼
Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 22095楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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