发表于: 2018-03-01 23:47:05

1 702


今天完成的事情:

1.jar包是什么。

    JAR 文件就是 Java Archive File,它的应用是与 Java 息息相关的,是 Java 的一种文档格式。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的。

jar包是什么? http://blog.csdn.net/xiaobuhome/article/details/51288024

使用maven构建工具可以将工程打包生成普通的jar包、可运行的jar包,也可以将所有依赖一起打包生成jar。

(使用maven生成可执行的jar包   http://www.cnblogs.com/justinzhang/p/4975727.html)

默认的mvn install生成的jar是不带主类入口的,需要在maven-compile-plugin中设置mainClass,上面的文章里面有方法

2.怎么运行jar文件。进入jar包所在目录,没有在MANIFEST.MF中指定Main-Class项的jar包,通过命令java -cp xxx.jar FilePath.ClassName。这样就可以运行了。指定了Main-Class项jar包,通过命令java -jar xxx.jar运行。
(Linux-Centos7运行jar文件 http://blog.csdn.net/xing930408/article/details/76692005)

3.什么是MANIFEST.MF,怎么配置Main-Class项(上面第二点)
(Linux系统下运行jar文件,提示:No main manifest attribute, in XXX.jar   http://blog.csdn.net/zhaoyunxiang721/article/details/49093729)
     这里讲,打包jar包是需要在MANIFEST.MF中指定Main-Class项(即指定main方法入口类,这个类必须是一个可执行的类),以便执行java -jar xxx.jar时能够找到对应的主类。因为-jar的含义是后面的jar包中有含main方法的class可以独立运行。所以在打jar包的时候需要指定这个类。
而对比 java -classpath yuntest-1.0-SNAPSHOT.jar com.ptteng.App,这里是因为没有指定含main的类,所以在运行时就需要输入含main类的路径了。(MANIFEST.MF文件全面解析 http://mymobile.iteye.com/blog/2084632)

(JAR包中的MANIFEST.MF文件详解以及编写规范 https://www.cnblogs.com/EasonJim/p/6485677.html)
      结合slf4j-log4j的jar包,查看MANIFEST.MF文件的作用。可以看到MANIFEST.MF文件是在META-INF目录下,这个文件是对jar包信息的描述文件之一。MANIFEST中的配置信息的分类:一般属性;应用程序相关属性;小程序(applet相关属性);扩展标识属性;包扩展属性;签名相关属性;自定义属性。

4.maven生命周期。生命周期是包含在一个项目构建中的一系列有序的阶段。

Maven有三套相互独立的生命周期,Clean Lifecycle、Default Lifecycle、Site Lifecycle。

明天的计划:

导入本地数据库到服务器,并连接。

遇到的问题:

服务器上运行jar包,一直不成功。开始怀疑jar包、Linux命令是不是不对,最后通过找到的文章逐步发现确实是命令没有写对,从而也知道了MANIFEST.MF的位置以及它对于jar包的作用,以及Main-Class的作用是用来指定含main入口的类。而且要在MANIFEST.MF文件中生成Main-Class需要在pom.xml文件中添加插件。执行mvn package和mvn install是默认没有指定Main-Class。

收获:

云服务器上运行没有指定Main-Class的jar包。


返回列表 返回列表
评论

    分享到