请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

class not Found

完全按照老师的代码,可是无法运行,debug时发现,在执行

Node.printLinkedList(creator.createLinkedList(Arrays.asList(1)));

时, https://img1.sycdn.imooc.com/szimg//59bba065000160ee09720356.jpg

说是找不到类,我Node和LinkedListCreator都在定义的package Recursion内了,为啥找不到?请教,谢谢!

正在回答 回答被采纳积分+3

9回答

音策 2017-09-18 10:22:19

亲,看完 百分之40可以下载完整代码,建议去【同学】栏目下下载完整代码,对照着看

0 回复 有任何疑惑可以回复我~
ccmouse 2017-09-16 00:08:05

出现class找不到多半是环境配置关系,不是代码的问题。他说找不到的是什么类?这个要仔细查看,原因可能有很多种,靠检查代码是不是一样不一定管用,这里有个方法排错:

    ClassLoader cl = ClassLoader.getSystemClassLoader();

    URL[] urls = ((URLClassLoader)cl).getURLs();

    for(URL url: urls){

        System.out.println(url.getFile());

    }

运行这段之后会打出当前的classpath,然后你去看看这些个classpath,他们可能是目录也可能是jar包,jar包的话可以用winzip/winrar之类的展开,看看有些什么东西,到底有没有他说找不到的那个类。这样你可以顺便理解下java是怎么找到class来运行的

1 回复 有任何疑惑可以回复我~
  • 提问者 ALGO_cui #1
    老师,现象是这样的:我运行程序后没有反应,好像进入死循环了,cpu一直在计算着什么,于是我进入debug模式,发现程序到Node.printLinkedList(creator.createLinkedList(Arrays.asList(1)));
    这一句,就进入了我这个问题最初贴出来的那幅图,然后程序就没反应了,控制台上是一片白,debug程式也不退出。
    回复 有任何疑惑可以回复我~ 2017-09-16 03:24:04
  • ccmouse 回复 提问者 ALGO_cui #2
    那看来不是类找不到。为了排除eclipse的问题,你可以到D:\ProgramWorkShop\JavaWorkSpace\JavaCatagory\bin 目录下用命令行运行java Recursion.LinkedListCreator
    
    Eclipse里面你看下Preference->Java->Debug->Step Filtering,让它不要跳进classloader
    回复 有任何疑惑可以回复我~ 2017-09-16 09:48:48
  • 提问者 ALGO_cui 回复 ccmouse #3
    老师,我在命令行运行结果显示如下图。在Preference->Java->Debug->Step Filtering中我添加了Recursion package。还是不行。对了我用的是MyEclipse
    回复 有任何疑惑可以回复我~ 2017-09-16 17:57:38
提问者 ALGO_cui 2017-09-16 17:55:48

https://img1.sycdn.imooc.com/szimg//59bcf3be0001e52806480198.jpghttps://img1.sycdn.imooc.com/szimg//59bcf5000001881106360606.jpg

输出和配置图

0 回复 有任何疑惑可以回复我~
  • ccmouse #1
    那这么看起来是死循环了。Step Filter里面是说调试的时候不想要调试的包或者类,因此勾上ClassLoader,但是Recursion是你要调试的,所以不要勾上,这样的话用调试器应该能看出来死循环在哪里。那么既然是死循环,我们就要寻找原因。我针对性看了下应该在:
        while(head != null) {
          System.out.print(head.getValue());
          System.out.print(" ");
        }
        System.out.println();
      }
    
    打印完之后要加上head = head.getNext();
    这句话抱歉也是我当时的一个疏忽,一开始自己也漏了,然后几秒后补上的,但是可能录像剪辑的关系补上的那一段停留时间不够长。
    回复 有任何疑惑可以回复我~ 2017-09-18 09:50:30
提问者 ALGO_cui 2017-09-16 03:34:46

我用了您给的方法,输出的目录就是我建立整个javacatagory的目录

D:\ProgramWorkShop\JavaWorkSpace\JavaCatagory\binhttps://img1.sycdn.imooc.com/szimg//59bc2a220001ba9706340218.jpg

Recursion里的内容为

https://img1.sycdn.imooc.com/szimg//59bc2a5a000139c106760244.jpg

我环境变量里配置的classpath当然不是这个目录路径,我也试了其它JavaCatagory里其它包里的程序,打印的结果和本递归程序一样,但其它程序运行都没问题。我还是不明其因。多谢老师耐心指导。


0 回复 有任何疑惑可以回复我~
提问者 ALGO_cui 2017-09-15 21:30:46

https://img1.sycdn.imooc.com/szimg//59bbd5e40001b35407110748.jpg

NodeinLink.java 代替Node.java

0 回复 有任何疑惑可以回复我~
提问者 ALGO_cui 2017-09-15 21:28:57

https://img1.sycdn.imooc.com/szimg//59bbd57000012cb310750606.jpg

LinkedListCreator.java

0 回复 有任何疑惑可以回复我~
17号猎人 2017-09-15 21:27:26

... classpath都没配对 应该先看下免费java的免费课

0 回复 有任何疑惑可以回复我~
  • 提问者 ALGO_cui #1
    我其他java程序运行都没问题啊
    回复 有任何疑惑可以回复我~ 2017-09-15 21:36:51
提问者 ALGO_cui 2017-09-15 21:09:32

https://img1.sycdn.imooc.com/szimg//59bbd0db0001451306020358.jpg路径没问题啊,代码我也检查了

0 回复 有任何疑惑可以回复我~
ccmouse 2017-09-15 18:53:46

是不是没有用完整代码?

0 回复 有任何疑惑可以回复我~
  • 提问者 ALGO_cui #1
    对的,我还没到40%的进度
    回复 有任何疑惑可以回复我~ 2017-09-15 19:00:01
  • 提问者 ALGO_cui #2
    可是都是一步一步按照老师的书写,敲进去的啊~
    回复 有任何疑惑可以回复我~ 2017-09-15 19:01:10
  • ccmouse 回复 提问者 ALGO_cui #3
    一步步敲也有可能敲错,这样的情况其实挺常见。找不到class你可以把完整的package+class(也叫作fully qualified class name)在classpath上找一下。我感觉你可能import错class了,可能用了别的库的node
    回复 有任何疑惑可以回复我~ 2017-09-15 20:54:31
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信