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
文件