1. import是干什么的
导入不同的包下面的类,告诉java类是在哪个包目录下面
2. 实际的例子
例子的目录结构
lydia@lydia:~/sgy/java_learn/package_import_learn$ tree -A
.
├── Learn.java
├── lisi
│ └── Learn.java
└── zhangsan
└── Learn.java
2 directories, 3 files
zhangsan/Learn.java
package zhangsan;
public class Learn {
public static void zhangsan_print () {
System.out.println("zhangsan");
}
};
lisi/Learn.java
package lisi;
public class Learn {
public static void lisi_print () {
System.out.println("lisi!");
}
};
工程目录下面的Learn.java
import zhangsan.*;
import lisi.*;
public class Learn {
public static void main (String args[]) {
System.out.println("hello!");
zhangsan.Learn.zhangsan_print();
lisi.Learn.lisi_print();
}
};
编译的命令
javac lisi/Learn.java
javac zhangsan/Learn.java
javac Learn.java
执行输出的结果
lydia@lydia:~/sgy/java_learn/package_import_learn$ java Learn
hello!
zhangsan
lisi!
目录太多,能不能打包成一个压缩文件
jar -cvf my.jar zhangsan/ lisi/
但是这个时候执行找不到这些类
lydia@lydia:~/sgy/java_learn/package_import_learn$ java Learn
hello!
Exception in thread "main" java.lang.NoClassDefFoundError: zhangsan/Learn
at Learn.main(Learn.java:8)
Caused by: java.lang.ClassNotFoundException: zhangsan.Learn
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
... 1 more
lydia@lydia:~/sgy/java_learn/package_import_learn$
需要重新设置一下CLASSPATH
export CLASSPATH=.:my.jar
之后能够正常输出结果