linux下运行java项目

2016年3月24日10:10:39

1,把项目导出成一个jar包.

这里有一点要注意,在jar包中没有source folder这个概念.选中一个项目,右键Export,JAR file,下一步,选择我们的导出的文件

image

如图,选择了,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--未完

原文地址:https://www.cnblogs.com/yinyu/p/5324508.html