1,程序的构建,包括编译、运行、打包和文档生成等。
2,语言基础,包括语法、变量、数组、流程控制、方法、包、类、枚举、接口等。
3,面向对象特性,包括继承、封装、多态、抽象、访问控制。
4,相关运行机制,包括异常、断言、垃圾收集等。
5,常用工具库,包括线程及并发控制、文件及IO处理、泛型和集合类等。
6,常用的类和接口,包括Object、字符串、序列化、比较、克隆等。
day_1_10.26(程序的构建,包括编译、运行、打包和文档生成等)
1、Java源程序经过编译器编译后编成字节码,即class文件中的内容,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。
输入命令 javac 文件名.java
对 文件名.java 程序进行编译,生成 文件名.class 文件,
再输入命令 java 文件名 运行文件名.class文件,随后即可看到程序运行的结果
例子:
test.java
public class test
{
public static void main(String[] args)
{
System.out.println("Hello World");
}
}
(1)进入工程文件夹
(2) javac test.java(编译完成后,文件列表多了test.class文件)
(3) java test
2,带包名的java程序
例子:
model包里放test.java
package model;
public class test
{
public static void main(String[] args)
{
System.out.println("Hello World");
}
}
(1)进入src目录
(2)javac model/test.java
(3)java model.test(或model/test)
3,编译引用第三方jar包的类
javac -cp lib/mysql-connector-java-5.1.23-bin.jar ../../src/db/DBUtil.java
java -cp lib/mysql-connector-java-5.1.23-bin.jar ;../../src db/DBUtil.java
//分号;空格 易错点
//ps,javac -cp lib/* 表示导入全部jar
4,引用了第三方jar包的Java项目打包成jar文件
由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下:
//MAINIFEST的版本
Manifest-Version: 1.0
//要执行的main java文件
Main-Class: main.test
//外来jar包的位置
Class-Path: lib/xxx1.jar lib/xxx2.jar lib/xxxx3.jar
注意:
1、Class-Path: 和Main-Class: 后边都有一个空格,必须加上,否则会打包失败,错误提示为:Invalid header field;
2、假设我们的项目打包后为test.jar,那么按照上面的定义,应该在 test.jar的同层目录下建立一个lib文件夹(即lib文件和打包的jar文件
在同一个目录下),并将相关的jar包放在里面。否则将会出现“Exception in thread “main” java.lang.NoClassDefFoundError”
的错误;
3、Main-Class后面是类的全地址,比如你的主文件是test.java,文件里打包为package com.main; 那么这里就写com.main.test,
不要加.java后缀,主文件地址写错将会出现“找不到或无法加载主类
”的错误;
5,普通class文件打包jar
cd进入要打成jar包的class文件所在目录:
jar cvf [生成jar的名称.jar] [列出class文件] //若有多个用空格隔开
//例1:操作零散的单个或几个class文件:
cd bin jar cvf test.jar com/model/test.class
com/model/student.class
之后会在bin目录下生成test.jar
ps,把一个文件夹下面所有的class文件打成jar包
jar cvf ipaddress.jar *