采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
完全按照老师的代码,可是无法运行,debug时发现,在执行
Node.printLinkedList(creator.createLinkedList(Arrays.asList(1)));
时,
说是找不到类,我Node和LinkedListCreator都在定义的package Recursion内了,为啥找不到?请教,谢谢!
亲,看完 百分之40可以下载完整代码,建议去【同学】栏目下下载完整代码,对照着看
出现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来运行的
老师,现象是这样的:我运行程序后没有反应,好像进入死循环了,cpu一直在计算着什么,于是我进入debug模式,发现程序到Node.printLinkedList(creator.createLinkedList(Arrays.asList(1))); 这一句,就进入了我这个问题最初贴出来的那幅图,然后程序就没反应了,控制台上是一片白,debug程式也不退出。
那看来不是类找不到。为了排除eclipse的问题,你可以到D:\ProgramWorkShop\JavaWorkSpace\JavaCatagory\bin 目录下用命令行运行java Recursion.LinkedListCreator Eclipse里面你看下Preference->Java->Debug->Step Filtering,让它不要跳进classloader
老师,我在命令行运行结果显示如下图。在Preference->Java->Debug->Step Filtering中我添加了Recursion package。还是不行。对了我用的是MyEclipse
输出和配置图
那这么看起来是死循环了。Step Filter里面是说调试的时候不想要调试的包或者类,因此勾上ClassLoader,但是Recursion是你要调试的,所以不要勾上,这样的话用调试器应该能看出来死循环在哪里。那么既然是死循环,我们就要寻找原因。我针对性看了下应该在: while(head != null) { System.out.print(head.getValue()); System.out.print(" "); } System.out.println(); } 打印完之后要加上head = head.getNext(); 这句话抱歉也是我当时的一个疏忽,一开始自己也漏了,然后几秒后补上的,但是可能录像剪辑的关系补上的那一段停留时间不够长。
我用了您给的方法,输出的目录就是我建立整个javacatagory的目录
D:\ProgramWorkShop\JavaWorkSpace\JavaCatagory\bin
Recursion里的内容为
我环境变量里配置的classpath当然不是这个目录路径,我也试了其它JavaCatagory里其它包里的程序,打印的结果和本递归程序一样,但其它程序运行都没问题。我还是不明其因。多谢老师耐心指导。
NodeinLink.java 代替Node.java
LinkedListCreator.java
... classpath都没配对 应该先看下免费java的免费课
我其他java程序运行都没问题啊
路径没问题啊,代码我也检查了
是不是没有用完整代码?
对的,我还没到40%的进度
可是都是一步一步按照老师的书写,敲进去的啊~
一步步敲也有可能敲错,这样的情况其实挺常见。找不到class你可以把完整的package+class(也叫作fully qualified class name)在classpath上找一下。我感觉你可能import错class了,可能用了别的库的node
登录后可查看更多问答,登录/注册
为面试新手量身定制的Java面试尊享课,解锁“鲤鱼跃龙门”的妙招
1.2k 4
1.0k 9
1.1k 8
1.9k 7
1.3k 6