jar文件运行不了怎么办?
可能jar文件损坏了,你可以尝试用winrar打开这个jar文件,把它解压,看有没有报错,如果报错,说明文件损坏了。
打包成jar文件后运行出现Invalid or corrupt jarfile 解决打jar包
1。jar -cvf hello。jar hello。class
2。这时java -jar hello。jar 是运行不了的
3。解压刚打的Jar包到新的目录,会发现里边多了一个META-INF文件夹里边有一个MANIFEST。MF文件
4。用记事本打开MANIFEST。MF文件,修改为
Manifest-Version: 1。0
Main-Class: Hello
Created-By: aaa
5。将MANIFEST。MF复制到和Hello。class 放在一起
然后打包:
jar cvfm abc。jarMANIFEST。MFHello。class
得到可运行的jar
java -jar 就可以运行的jar包[ 其中为jar包名]
在IT软件界,Java一直占据着大半壁江山,Java的生态圈环境很好,有着很多优秀的框架,而 Spring Boot 作为Spring框架中的代表,这几年也越来越火。
Spring Boot是用来简化Spring应用的配置和开发过程的,此框架采用了“约定优于配置”的理念, 免去了繁琐的XML配置 ,使我们开发项目更简单。而且Spring Boot提供了两种项目打包方式:生成war文件、生成可执行的jar文件,很多Java开发者不清楚这两种项目打包方式的区别,生产环境该选哪种方式呢?
1、war包方式部署
war包其实是打包后的Java Web工程, 本质上是个压缩包 ,里面包含了很多目录及文件,我们把war包放入Tomcat这类容器中启动后,war包就会自动解压出一个同名的文件夹来。
注意:Spring Boot项目如果要打包成war包来部署,是需要修改项目入口文件代码的。另外由于Spring Boot内置了Tomcat容器,所以打包成war包时要将内置的Tomcat依懒排除掉。
2、可执行jar文件方式部署
Spring Boot框架默认的打包部署方式是生成一个可执行的jar文件,无论项目多么复杂,依懒包有多少,最终只有一个jar文件(有些可能有外置的配置文件),在任何一台装有JRE/JDK环境的服务器上可以直接以 java -jar xxjar 这种方式来运行(其实是靠内置的Tomcat来运行的),十分方便。
可执行jar文件方式部署是我们推荐的 ,特别是在微服务场景下部署更便捷。
无论是war方式还是jar方式,本质上差别并不大。在生产环境下还是要选择合适的方式。
综上,如果服务器配置高、节点多、微服务方式,建议选择jar方式部署;如果服务器配置跟不上,建议选择war方式部署(省内存空间)。
设置JVM内存的参数有四个:
-Xmx Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;
-Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;
-Xmn Java Heap Young区大小,不熟悉最好保留默认值;
-Xss 每个线程的Stack大小,不熟悉最好保留默认值;
2 如何设置JVM内存分配:
(1)当在命令提示符下启动并使用JVM时(只对当前运行的类Test生效):
java -Xmx128m -Xms64m -Xmn32m -Xss16m Test
(2)当在集成开发环境下(如eclipse)启动并使用JVM时:
a 在eclipse根目录下打开eclipseini,默认内容为(这里设置的是运行当前开发工具的JVM内存分配):
-vmargs
-Xms40m
-Xmx256m
-vmargs表示以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn,-Xss,另外,eclipseini内还可以设置非堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m。
此处设置的参数值可以通过以下配置在开发工具的状态栏显示:
在eclipse根目录下创建文件options,文件内容为:orgeclipseui/perf/showHeapStatus=true
修改eclipse根目录下的eclipseini文件,在开头处添加如下内容:
-debug
options
-vm
javawexe
重新启动eclipse,就可以看到下方状态条多了JVM信息。
在部署zhihudemo时,没有用Jenkins这种自动化部署工具,在linux centos中部署jar包项目时遇到一个坑,通过xshell远程连接服务器,在系统中使用“java -jar”命令启动jar包时,输出日志会占据当前终端页面,如果关闭终端窗口的话,整个java程序就将停止,为了解决这个问题,可以将jar包设置为后台服务,并进一步设置为系统服务和开机自启
在/etc/initd/目录下创建zhihudemoServicesh脚本如下:
将zhihudemo-001-SNAPSHOTjar和zhihudemoServicesh加上执行权限:
添加到chkconfig作为系统服务,并设置开机启动:
执行完成后重启,查看启动日志,可以看到该jar包程序已经作为守护进程在系统后台运行
0条评论