序言
你好! Java提供了一系列的命令,用于在没有IDE等开发工具的情况下,用windows的记事本或者unix的vim写一些Java代码,虽然大部分的开发都是在IDE的情况下开发的,但是总有一些时候,我们不想浪费空间来安装开发工具;所以在最简洁的系统上,我们依然可以运行一些简单的Java代码;这也是我写这一篇博客的原因所在!
请注意:如果你需要在Windows的cmd或者unix的终端shell上直接输入命令,那么需要配置环境变量,不然就只能进入jdk的安装目录的bin路径输入命令;配置环境变量的方法,请允许我后续整理好再贴上来;
以下命令皆在jdk1.8的环境上测试通过,如果是其它较低版本,可能无法生效;
Java基本命令
0.为了方便大家尝试去实践这个步骤,这里贴上一个基本的HelloWolrd.java的源代码
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
1.Java的编译源代码.java文件成字节码.class文件
javac HelloWorld.java
编译后,会在当前目录生成与HelloWorld.class文件
2.执行这个.class文件
java HelloWorld
输入这个命令后,jre(java运行环境)会调用jvm(Java虚拟机)执行该class文件的字节码,把字节码转换成当前运行的操作系统所支持的二进制文件并执行;这里不再赘述java虚拟机的执行流程;
请注意:javac命令在编译的时候是需要带上文件后缀的,但是java命令在执行的时候是不需要带上后缀的;
3.打包jar包文件(简单的代码很少会用到)
jar -cvf hello.jar HelloWorld.class
这个命令会把后面的class文件打包到前面的jar包里面去,如果有多个class文件,可以在后面以空格的方式追加,如下所示:
jar -cvf hello.jar HelloWorld.class Demo.class //这里暂时只提供了一个类的代码,所以这里的代码就不要执行了
解压文件到当前目录
unzip hello.jar
因为默认的打包不会在生成的.MF文件中添加启动jar包程序的主类,需要自己添加,所以现在需要先解压出来,这里我用的Mac,安装了解压的命令,类unix系统应该都有类似的命令,安装使用即可;我们的目的就是解压,如果你是安装软件进行解压也是一样的,Windows自带 WinRar解压工具;
接下来,我们要修改解压后生成的META-INF/MENIFEST.MF文件,用vim打开,或者记事本打开编辑;unix命令如下:
vim META-INF/MENIFEST.MF
然后在第三行添加jar包的主类,主类是jar包启动后,虚拟机会去这个主类文件寻找main方法并开始执行;写法如下:
HelloWorld
注意,只需要在第三行加上主类的名字,不需要加上后缀,与执行class文件一样不需要加后缀;
然后保存文件并退出,unix代码如下:因为使用了vim,所以编辑完成后,需要按esc,在输入下面代码进行保存并退出,回车,详细vim命令这里不再赘述,百度上很多:
:wq
接下来是重新打包主类和.MF描述文件,执行下面的命令,Windows用户可以直接右键选中主类的描述文件的所在目录进行压缩;unix系统命令行如下:
jar -cvfm hello.jar META-INF\MENIFEST.MF Hello.class
最后一步就是执行jar包文件了,代码如下:
java -jar hello.jar 执行jar包程序
Java高级命令
1.生成api文档
javadoc -d doc -encoding UTF-8 -charset UTF-8 *.java
上面的命令可以根据java源代码文件写的注释自动生成html格式的api文档,但是你的注释必须是/**
**/形式的,举例如下:
package com.example;
import com.example.dao.UserDao;
import com.example.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
* @author lianchua
* @version 1.0.0
* @ClassName Main.java
* @Description TODO
* @createTime 2019年09月24日 16:50:00
*/
public class Main {
/**
* mybatis基本查询实现
* mybatis实现的基本原理
*
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
/**
* 把mybatis的xml配置文件转换成输入流
*/
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
/**
* 利用sql的工厂建造器sqlSessionFactoryBuilder对象的build()方法得到sqlSessionFactory对象
*/
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
/**
* 工厂调用openSession()方法得到SqlSession对象
*/
SqlSession session = factory.openSession();
/**
* session对象调用getMapper()方法,传入mapper接口,得到代理的mapper实现对象
*/
UserDao mapper = session.getMapper(UserDao.class);
/**
* 代理的实现mapper对象调用具体的mapping配置文件里面的绝体findAll()方法查询,得到查询到的对象
*/
List<User> list = mapper.findAll();
/**
* 输出对象
*/
System.out.println(list);
}
}
上面是mybatis的入门demo,也是mybatis的实现原理,方法上面的注释,就可以被javadoc命令给识别到;如果是双左斜杠//的方式,就是不行的;
命令详解:
下面两个代码都是生成api文档,不同的是,第一个是带参数的,可以设定编码,和指定目录,第二个则看起来容易出现中文乱码的问题,或者是没有指定目录,生成的十几个文件把整个目录搞得很乱,所以最好还是设定支持中文的编码utf-8和指定输出目录吧;
javadoc -d doc -encoding UTF-8 -charset UTF-8 *.java
javdoc *.java
本次更新到此为止,2019/09/27 星期五;