classpath的作用、简单批处理自定义编译、第一个jar文件包的生成

来源:互联网 发布:怎样卸载windows游戏 编辑:程序博客网 时间:2024/06/05 23:49

classpath

首先回顾下前面学到过的编译:

把源码文件和编译之后的文件分开
http://blog.csdn.net/github_26672553/article/details/72742919

注意:我们在最后要运行me的时候是需要进入到target目录下

cd target/java me

按理说我们是可以直接在根目录下执行:

java target/me#按理可以这样#运行 target目录下的me

但是这样却报错啦:错误: 找不到或无法加载主类 target.me

为了解决这个问题,就需要了解classpath
我可以看一下classpath这个环境变量(设置path环境变量,我们就可以在任何目录执行java或javac命令了)

#linux查看echo $ClASSPATH

因为如果我们要夸文件夹执行,可以把要执行的目录加入classpath环境变量(一般不会这么干)。
一般我们采用在执行的时候多加一个参数-classpaht

java -classpath target me

这就可以在项目根目录运行target目录下的me.class文件了。

简单批处理自定义编译

接着之前的代码,我们在新建一个包news,然后创建一个类NewsService
这里写图片描述

NewsService.java代码:

package news;public class NewsService{    public static void getVersion()    {        System.out.println("news 1.0");    }}

如果我们要在myname.java使用这个类,需要:

import news.*;// 调用NewsService.getVersion();

回顾我们之前要把src目录下的源码编译到target目录中:

javac -d target -sourcepath src src/me.java

这里写图片描述
(我们只选择编译me.java,为什么myname.java和NewsService.java也被编译了呢?这是因为me.java里调用了myname.java,myname.java调用了NewsService.java)

因为我们每次修改重新编译,都要删掉之前编译的文件。其实这一步我们可以写一个批处理脚本:

#新建vi build#脚本内容如下rm target/* -fr && echo 'target dir is cleared'javac -d target -sourcepath src src/me.java
#给build文件权限chmod +x build#执行这个文件./build

jar文件包

windows中我们使用类似.net可以把需要的类打包成dll
php中可以打包成phar,java是否也可以呢?

java中叫做jar
有2种形式:打成可执行的jar;仅仅把我们的业务类库打包,供调用是引用

我们把news打包一下:

cd target/#打包成news.jar文件#打包news这个文件夹jar -cf news.jar news/

执行完成,target文件夹会多一个news.jar文件
这里写图片描述

原创粉丝点击