如何在写一个类的时候可以使用到其他类
主题:如何在写一个类的时候可以使用到其他类
这里要讲的是不同包中类的使用
这里介绍如果下载了一个外部JAR包,如何在写一个类的时候可以使用到这个JAR包提供的类。
至于为什么要制作成jar包,我的理解是jar包其实也只是一种压缩方法,方便传输,好管理,不像文件夹会很乱
等等看看jar包的制作过程就知道了
介绍方法之前先介绍一下命令行编译源文件和执行主类的class文件方法
---如何编译package下的源文件----------
编译带文件夹的源文件(源文件没有package也可以)
javac moon\star\TestOne.java
如果源文件中没有申明package而且不是主类,可以直接到文件夹路径下(划重点了哈第一是没有申明package,第二是不是主类)
javac TestOne.java
如果想一次编译多个源文件
可以javac moon\star\*.java
---如何运行package下的class文件-------
运行有包名的主类,主类的字节码一定存放在package中,而且必须到package的上一层目录运行
java moon.star.test
1)主类所在的包和要使用的类所在的包在同一级目录下
在目录D:\1000下有一个package,名称为moon.star,下面有两个.class文件,源文件分别为
package moon.star;
public class TestOne{
public void fTestOne(){
System.out.println("I am a method In TestOne class");
}
}
package moon.star;
public class TestTwo{
public void fTestTwo(){
System.out.println("I am a method In TestTwo class");
}
}
在1000\下新建一个测试类
import moon.star.TestOne;
public class test{
public static void main(String args[]){
TestOne testone = new TestOne();
testone.fTestOne();
}
}
运行结果:I am a method In TestOne class
这里可以直接使用import引入需要使用到的类,不用修改classpath,也不用把jar包添加到jdk扩展中
2)修改系统环境变量classpath
在目录D:\1000下有一个package,名称为moon.star,下面有两个.class文件,源文件分别为
package moon.star;
public class TestOne{
public void fTestOne(){
System.out.println("I am a method In TestOne class");
}
}
package moon.star;
public class TestTwo{
public void fTestTwo(){
System.out.println("I am a method In TestTwo class");
}
}
编译上面的两个类,打开windows的高级系统设置,环境变量,在系统变量中的classpath中添加你要引入类所在的包的上一级目录,这里是D:\1000
注意:如果要引入的类没有申明package,那么在classpath中添加类所在的路径即可
写一个测试类
import moon.star.TestOne;
public class test{
public static void main(String args[]){
TestOne testone = new TestOne();
testone.fTestOne();
}
}
运行结果:I am a method In TestOne class
小结:这种方法的类可以不打包成JAR包放在JRE扩展下,直接把package的上一级目录添加到classpath即可;也可以打包成JAR包,在classpath中添加jar包的精确路径。总的来说,这种方法更加灵活。
3)将文件复制到JRE扩展中(jdk\jre\lib\ext)
将moon这个文件夹复制到JDK安装目录下的lib中
编译报错test.java:1: 错误: 程序包moon.star不存在
import moon.star.TestOne;
^
test.java:4: 错误: 找不到符号
TestOne testone = new TestOne();
^
符号: 类 TestOne
位置: 类 test
test.java:4: 错误: 找不到符号
TestOne testone = new TestOne();
^
符号: 类 TestOne
位置: 类 test
3 个错误
复制到jre\lib\ext中也是报上面的错
是不是文件夹不行,那就打包成JAR
新建一个hello.mf
Manifest-Version: 1.0
Class: moon.star.TestOne moon.star.TestTwo
Created-By: 1.8
将hello.mf保存到D:\1000中,进入D:\1000,即包名的上一层目录,使用jar命令生成Moon.jar
jar cfm Moon.jar hello.mf moon\star\TestOne.class moon\star\TestTwo.class
如果moon\star中只有class文件也可以使用如下命令:
jar cfm Moon.jar hello.mf moon\star\*.class
把生成的Moon.jar复制到JRE扩展文件夹下,jre\lib\ext
运行成功
小结:这种方法需要把package打包成JAR包放在JRE扩展目录中,文件夹不行
扩展:
jdk\lib、jdk\jre\lib、jdk\jre\lib\ext、jre\lib这四个文件夹分别是什么,作用以及区别
请看博客:https://www.cnblogs.com/mq0036/p/3877901.html