【Dongle】【Java】基础(三)之classpath

来源:互联网 发布:多益网络 训练营 编辑:程序博客网 时间:2024/05/16 14:24

        提到classpath,就感觉自己挺蠢的,啥错都让我给鼓捣出来了。为啥?因为不听话啊~

        下面是我写的java代码实例TestPoint.java:

class Point {int x;int y;int z;Point(int _x,int _y, int _z){this.x = _x;this.y = _y;this.z = _z;}void setX(int _x){x = _x;}void setY(int _y){y=_y;}void setZ(int _z){z=_z;}//当前点到另一个点的距离平方int getDistance(Point p){return (x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)+(z-p.z)*(z-p.z);}}public class TestPoint{public static void main(String[] args) {Point p = new Point(1,2,3);Point p1 = new Point(0,0,0);System.out.println(p.getDistance(p1));p.setX(5.0);System.out.println(p.getDistance(new Point(1.0,1.0,1.0)));}}


             能看出哪里有问题吗?别看了,没有问题啦!编译看看:


        编译没有错,运行试试:


        运行出错了,看着提示说:main函数这里的问题?检查了几遍,没有发现main函数写错了啊?百度一下再看看,都提示说是main结构写错了,有说参数写错了,之前我写过关于main函数的介绍,里面有提到,也有说字母拼错了,等等。

        那么是哪里的问题呢?让伙伴也参与进来吧,不过他也是觉得我的代码有问题,给我左改右改,还是没解决出来,问题依旧存在。就这样时间恍恍惚惚出去N个小时了,还是我来吧。真的,我的代码真没有写错,为了防止检查失误,我专门将视频上的代码一字一字的对比,都没有问题。最后甚至将源码拿过来对比,也没有错位。甚至我将源码也编译了,结果错误也是相同的。瞬间,感觉心情好点了,因为下定义的认为源码都是有问题的。那么问题到底在什么地方呢?

        有时候确实不得不相信存在灵感这么一回事,那么一瞬间的事,或许就能解决一个大问题呢。说来,幸运的是,我也来了这么一次“灵感”:视频中有提到classpath环境配置获取class文件的时候是从前向后找的


       目录E:\IT\实践\J2SE\TestPoint在目录E:\IT\实践\J2SE后面,而java运行的时候,寻找class时是从前往后查找的,即先要从目录E:\IT\实践\J2SE查找类,找到了就不再向下找,找不到就继续向下一个目录里面找。

       那么我就在想会不会是前面有相同的class了呢?返回上一目录,point.class文件狠狠的刺激了我的眼睛。心中更是有些激动了。



         果断删除,重新编译和运行:

          结果永远这么的不可思议,真的成功了。

          我滴乖乖,原来真是这里的问题啊,有点欲哭无泪的样子。上午就遇到这个问题,中午鼓捣了一阵子,下午还花费了将近多半个小时,结果就是因为没有牢记一句话:“classpath环境配置的目录都是从前向后查找class文件”。当时视频中只是提到了一句,脑子有印象,但一直没在那个方向考虑。

          看来,还是多注意细节啊,要不吃亏啊!所幸,发现的早。就犹如老师说的,错误发生的越早越好,越早越有利!

          不过,这也算是学习到了呢!但是这样到底方便呢,还是不方便呢?我也说不好,也不好评价,毕竟这么多年了,都一直这样,肯定有这样的价值,否则官方早就更新了呢。我们都记得:classpath环境配置是从前向后查找我们需要的class文件的,所以尽量不要出现相同的类。

0 0
原创粉丝点击