2016年3月24日10:10:39
1,把项目导出成一个jar包.
这里有一点要注意,在jar包中没有source folder这个概念.选中一个项目,右键Export,JAR file,下一步,选择我们的导出的文件
如图,选择了,src,和design两个soruce folder,但是在我们导出jar中只有,包构造的文件名.没有src这个文件名和design这个文件名.
//这段代码,得到的.class文件目录,也就是bin目录. getClass().getClassLoader().getResource(".")
导出成JAR file和Runnable JAR file的区别
导出JAR file: 会让你选择要导出目录,你选择得所有soruce folder只是导出对应的bin下面编译后的文件.
导出Runnable JAR file: 不会让你选择导出的文件目录,默认只导出bin目录(出就是所有的soruce folder),但是要让你指定main方法所有类是那一个.
这个导出方式会在MANIFEST.MF文件中添加
Main-Class: com.udv.main.AppMain
Class-Path: .
注意:jar文件里面的配置文件,是不会读取的,(这里要做一个测试,同时在jar文件的一个包中里面配制文件,在跟目录也有配置文件,运行的时候去加载那一个配置文件).
注意:当项目引用其它jar是,Runnable JAR file 会创建maven相关东西.
导出soruce folder时,soruce folder下面的配置在jar里面是不会执行到的,要提取出来.
//用这种写法来得到配置文件有两个问题: //1,myeclipse中就得到是项目的bin目录,就算bin目录下是有这个文件,但是还是会出错 //1.linux中这段代码得到的是jvm类加路径,跟本不是你工程类路径 getClass().getClassLoader().getResource(".")+"config.properties";
补充一点bin下面的一级目录就是src的跟目录,bin目录下的二级目录,一定是包结构的目录了.
配置文件路:
File file1 = new File("config.properties");
1,在myeclipse表示config.properties文件在项目的跟目录.
2,在运行时表示与jar文件在同一目录下.如
─jarFile
├─hawei.jar
├─config.properties.
File file1 = new File("etc/config.properties");
1,在myeclipse表示config.properties文件在一个名为etc的source folder
1,运行时表示:如
─jarFile
└─hawei.jar
└─etc
└─config.properties
怎样运行两种方法导出的文件 (没有依赖其它jar的情况下)
1,Runnale JAR file 可以直接用java xxxxx.jar 来运行.
不过要注意配置文件目录有没有正确
2,JAR file
1,java –cp xxxxx.jar com.udv.main.AppMain 这样就可以运行.(这只是没有用到其它引用包才可以)
这种样运行还有一种与之相同的运行效果.就是把jar 文件解压出来,(相当于copy整个bin目录,)然后用命令
java com.udv.main.AppMain 这样行动与上面的效果是一样.(这里要进入项目的跟本目录,不能是com/udv/main/AppMain就算是文件的形式)
当成你也可以直接运行有main方法的class文件 先cd com/udv/main 然后直接java AppMain (这样是不可以的,你一定要在项目的跟目录下面运行)
注意:直接运行jar文件,
那么jar文件所在同级目录就是项目的跟目录
如果解压出来后运行,
那么com(顶级包名)文件夹所在同级目录就是项目跟目录.
下面来介绍有引用包的情况
1,可以直接在MAINFEST.MF文件下面设置(一般不用这种方式)
Class-Path中如果有很多项,写成一行打包的时候会报错line too long,这时需要把Class-Path分多行写。注意:从第二行开始,必须以两个空格开头
(我没有)
2,用命令java -cp lib/jedis-2.6.1.jar:bjar.jar:cjar.jar com.udv.main.AppMain(main的类)
注意:jar与jar之间用:号来开,
上面的代码中引入了三个jar.jedis-2.6.1.jar和bjar.jar和cjar.jar如果bjar和cjar里面都有com.udv.mian这样的包结构,都有AppMain类,那个jar在前面就执行那个类中的mina方法
3,如果是是直接copy的一个bin目录,用下面的脚本的方式启动.
扩展知识:
java -jar loginadd.jar ***.xls&
nohup java -jar loginadd.jar ***.xls&
注意:1、在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让 程序自动运行。如果不加 就在控制台运行,关闭窗口或者ctrl+c就会停止执行。
2、nohup:程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用
linux下用脚本启动java工程(非web工程)--都要引入很多jar的那种
http://lavasoft.blog.51cto.com/62575/204713 (脚本方法启动 直接copy bin目录)
脚本方式启动jar(还有成功)
2016年3月26日23:27:17--未完