本文共 1658 字,大约阅读时间需要 5 分钟。
导入不同的包下面的类,告诉java类是在哪个包目录下面
例子的目录结构
lydia@lydia:~/sgy/java_learn/package_import_learn$ tree -A.├── Learn.java├── lisi│ └── Learn.java└── zhangsan └── Learn.java2 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.javajavac zhangsan/Learn.javajavac Learn.java
执行输出的结果
lydia@lydia:~/sgy/java_learn/package_import_learn$ java Learnhello!zhangsanlisi!
目录太多,能不能打包成一个压缩文件
jar -cvf my.jar zhangsan/ lisi/
但是这个时候执行找不到这些类
lydia@lydia:~/sgy/java_learn/package_import_learn$ java Learnhello!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 morelydia@lydia:~/sgy/java_learn/package_import_learn$
需要重新设置一下CLASSPATH
export CLASSPATH=.:my.jar
之后能够正常输出结果
转载地址:http://phyci.baihongyu.com/