在不使用IDE写程序的时候,若有涉及到类中有声明package的时候经常会出现找不到类的问题,最近在看了一些相关资源后有点明白,也不是对不对,写出来和大家讨论下,现在有一个类(D:/java/Dog.java)
package com.zy;
public class Dog
{
public void printString(String i)
{
System.out.println("Dog.printString()" + i);
}
}
另一个类(D:/java/Cat.java)
import com.zy.Dog;
public class Cat
{
public static void main(String args[])
{
Dog dog = new Dog();
System.out.println("dog import");
}
}
声明了Dog.java的包在com.zy说明一定要将编译后的Dog.class文件拷贝到com.zy目录下,否则Cat.java找不到这个类
此时只要在系统变量的classpath的值增加一个“.”就可以了,因为他们(cat.java和Dog.java在相同目录下,运行时候自动会将当前目录认为的classpath);
若现在还有个类(D:/temp/TestPackage.java)要使用Dog.java
import com.zy.Dog;
public class TestPackage
{
public static void main(String args[])
{
Dog dog = new Dog();
dog.printString("helloDog!");
}
}
编译不成功了。。。为什么呢?和Cat.java一样import com.zy.Dog 却不能编译呢?
是因为系统不知道com.zy.Dog在哪,于是需要告诉系统在什么地点,这样就得设置环境变量下的classpath,增加一项,那需要加什么呢?需要加的是(D:/java) 为什么呢?因为Dog.java中声明的是package com.zy 而Dog.java本身就在D:/java,所以在环境变量的classpath下增加D:/java 其他任何地方的程序只要import com.zy.Dog 就能够使用这个类了。