1.前言
尝试用命令行的方式编译/运行代码,简单的总结下。
2.javac/java命令
2.1编译过程
- 首先准备三个java文件,很简单的泛化、依赖关系,这里的java有static代码块,咱们顺便熟悉一下static代码块的执行顺序。
*Person.jva:*
package cn.wh.com;
public class Person {
static {
System.out.println("Person static!");
}
public Person(){
System.out.println("Person constructor!");
}
}
*Child.java*
package cn.wh.com;
public class Child extends Person {
static {
System.out.println("Child static...");
}
public Child(){
System.out.println("Child constructor...");
}
}
*TestDemo*
package cn.wh.com.test;
import cn.wh.com.Child;
import cn.wh.com.Person;
public class TestDemo {
static {
System.out.println("test demo static......");
}
public static void main(String[] args) {
System.out.println("main......");
Person ps = new Child();
}
}
以上三个文件,接下来使用javac命令编译,我们把三个java源文件放到一个目录下,我这里放在te目录下
通过命令终端进入到该目录
因为这里TestDemo依赖Child,而Child依赖Person,所以肯定要先编译Person。
输入javac -d . Person.java编译Person.java:
-d . 表示生成的class文件放在当前目录下,因为Person.java在包cn.wh.com下,所以会在当前目录下生成cn/wh/com/Person.class文件
使用同样的命令编译Child.java和TestDemo.java
到这里,三个文件就编译完了,看下目录结构:
上面采用的是单个文件编译,其实也可以统一一下编译
效果和上面是一样的,接下来看下运行效果。
2.2运行
使用java命令运行刚才编译的TestDemo.class
运行成功,从这里也可以看出static代码块的执行顺序,static顺序优先于main方法,优先于构造函数,且子类的static优先于父类的够赞方法
3.涉及jar包的java文件编译运行
咱们用eclipse打个jar包来用。
3.1 eclipse打jar包,带main入口
将上面的三个文件打成jar包,步骤如下:
选择项目,右键–export
选择java/JAR
打包成功
看下jar包里的文件结构:
跟咱们自己编译出来的差不多。
运行:
3.2 eclipse打jar包,不带main入口
这个步骤跟上面基本一样,只是在最后不要知道main方法的路径即可,这里把TestDemo.java去掉后,安装上面的步骤打包,也命名为myJar.jar,目录结构:
3.3 使用jar包
TestDemo.java依赖myJar.jar,编译TestDemo.java文件:
将jar包和java文件放在同一目录下
编译
-cp指定依赖jar包路径,后面跟jar包名
经过以上编译过程呢,在当前目录下就生成了TestDemo.jva,当然是包含TestDemo的包路径的,如下:
运行:
完成
在开发过程中肯定不会自己手动编译这些文件,本文只是记录,了解下!