- 创建项目根目录
project
- 创建源码目录
project/src
- 创建编译文件后的文件目录
project/classes
- 创建
lib
库目录project/lib
1、在project/src
目录下创建com/feb13th/demo1
文件夹及其子文件夹。
2、在demo1
文件夹下创建HelloWorld.java
文件。
package
用于指定当前文件的包名,如果当前文件在根目录(本项目中是src
目录),那么可以省略package
一行。
import
用于引入其他在项目中可能用到的文件。格式为包名.文件名
(文件名需去除**.java**后缀)。
HelloWorld.java
package com.feb13th.demo1;
import com.feb13th.demo1.util.MyTools;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!!");
System.out.println(new MyTools().getTime());
}
}
3、在demo1
文件夹下创建util
文件夹用于存在MyTools.java
文件。
MyTools.java
package com.feb13th.demo1.util;
import java.util.Date;
public class MyTools {
public String getTime() {
return new Date().toString();
}
}
4、在project
文件夹下执行如下命令编译:
javac -d .\classes .\src\com\feb13th\demo1\HelloWorld.java .\src\com\feb13th\demo1\util\MyTools.java
目录分隔符根据操作系统划分,windows为**\, linux为/**
-d 用于指定文件编译后的输出目录。
后面跟的两项为我们要编译的java源文件。如果在同一个目录下存在多个需要编译的源文件,可以使用匹配符***.java**,如.\src\com\feb13th\demo1\*.java
。
**注: ** *.java只能匹配与单个文件夹,对其子文件无效。
将依赖的类库文件放入lib
目录下。如lib\fastjson-1.2.58.jar
1、修改HelloWorld.java
package com.feb13th.demo1;
import com.feb13th.demo1.util.MyTools;
import com.alibaba.fastjson.JSONObject;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!!");
System.out.println(new MyTools().getTime());
JSONObject obj = new JSONObject();
obj.put("1", "one");
obj.put("2", "two");
System.out.println(obj.toJSONString());
}
}
导入fastjson
对象,并使用该对象生成json
字符串。
2、使用-classpath
指定类库文件
javac -d .\classes -classpath .\lib\fastjson-1.2.58.jar .\src\com\feb13th\demo1\HelloWorld.java .\src\com\feb13th\demo1\util\MyTools.java
-classpath 用于指定代码编译时使用类库的位置,多个类库可以使用分隔符进行分割,windows使用 ; ,linux使用 :
java
指令用于运行java程序
执行java
指令需要在编译文件的根目录
java com.feb13th.demo1.HelloWorld
语法为:java main函数所在的文件
切换到project
目录。执行如下脚本
java -classpath ./classes/;./lib/fastjson-1.2.58.jar;./dependency/* com.feb13th.demo1.HelloWorld
-classpath 用于指定可执行文件的位置。
./classes
:刚刚编译的class文件目录
./lib/fastjson-1.2.58.jar
:程序中依赖的类库。
./dependency/*
:存放jar的文件夹,当我们有很多jar的时候,一个个指定classpath无疑费时费力,那么我们可以将所有的jar存放到一个目录中,使用通配符进行指定classpath。
多个classpath之间使用分隔符进行分割,windows使用 ; ,linux使用 :
注: 指定jar包时,不能通过匹配符进行匹配。例如spring-*.jar
1、拷贝lib
目录到classes
目录下
2、编写MANIFEST.MF
文件。
Manifest-Version: 1.0
Created-By: 1.8.0_71 (Oracle Corporation)
Main-Class: com.feb13th.demo1.HelloWorld
Class-Path: lib/fastjson-1.2.58.jar
该文件最后必须保留两个空行。:(冒号)后面必须跟一个空格。
Manifest-Version:指定版本号(可选)
Created-By:构建的JDK版本(可选)
Main-Class:main方法所有在类,如果指定必须唯一。
Class-Path:jar包中访问第三方类库的路径,和本地jar包的存储路径不是一个东西。多个类库之间使用 空格 分割。如果没有依赖第三方库可以不指定。
3、切换到project
目录,执行打包脚本
jar -cvfm my.jar ./MANIFEST.MF -C ./classes .
-C 用于指定目录并包含该目录下的文件, . (点)用于匹配当前文件夹下的所有文件。
4、运行jar
java -jar my.jar
也可以指定**-classpath**