jar包运行方式及日志

jar包运⾏⽅式及⽇志

⼀般情况下运⾏jar包,当前是可运⾏的jar包,直接命令

java -jar common.jar

按下ctrl+C ,关闭当前ssh或者直接关闭窗⼝,当前程序都会退出。

我们在命令的结尾添加 “&” ,&表⽰该程序可以在后台执⾏

java -jar common.jar &

但是在当窗⼝关闭时,程序也会中⽌运⾏

nohup java -jar common.jar &

命令最前⾯个nohub关键字,这样程序就会不挂断运⾏命令, 当ssh终端关闭时,程序仍然在运⾏,当前程序的⽇志会被写⼊到当前⽬录的nohup.out⽂件中

我们可以改下输⼊的⽇志⽂件

nohup java -jar common.jar > log.out &

当前程序的⽇志会被写⼊到当前⽬录的log.out⽂件中

如果不想写⽇志,可以将⽇志重定向到 /dev/null 中,/dev/null代表linux的空设备⽂件,所有往这个⽂件⾥⾯写⼊的内容都会丢失

nohup java -jar common.jar > /dev/null &

标准输出就会不再存在,没有任何地⽅能够找到输出的内容

nohup java -jar common-api.jar >/dev/null 2>log.error &

只输出错误信息到⽇志⽂件,标准输出不写⼊⽇志⽂件,直接丢弃

nohup java -jar common-api.jar >/dev/null 2>&1 &

标准输出(stdout)重定向到/dev/null中(丢弃标准输出),然后标准错误输出(stderror)由于重⽤了标准输出的描述符,所以标准错误输出也被定向到了/dev/null中,错误输出同样也被丢弃了

nohup java -jar common-api.jar >log.out 2>&1 &

标准输出重定向到log.out中,然后错误输出由于重⽤了标准输出的描述符,所以错误输出也被定向到了log.out中

但是不管那种情况,如果⽇志输出,⽇志⽂件都会增加很快,造成单个⽂件很⼤。所以需要拆分⽂件

1:定时作业,每天将⽇志⽂件复制⼀份,然后将当前的⽇志⽂件清空。

2:借助 cronolog来分隔⽇志

nohup java -jar common-api.jar | /usr/local/cronolog/sbin/cronolog logs/console-%Y-%m-%d.out &

这样每天会产⽣⼀个console开头的⽇志⽂件。

合集下载

Maven项目打包成jar包运行(将第三方引用包与项目代码打包成一个jar包)

Maven项目打包成jar包运行(将第三方引用包与项目代码打包成一个jar包)

Maven项⽬打包成jar包运⾏(将第三⽅引⽤包与项⽬代码打包成

⼀个jar包)

⼀、新建Maven项⽬,Packaging为jar

⼆、新建主类

主类代码如下:

package com.example.demo;

import javax.swing.JFrame;

public class GuiMain extends JFrame {

private static final long serialVersionUID = 1L;

public static void main(String[] args) {

GuiMain gm = new GuiMain();

gm.setTitle("JFrame窗⼝");

gm.setSize(640, 480);

gm.setResizable(false);

gm.setLocationRelativeTo(null);

gm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

gm.setVisible(true);

}

}

三、pom.xml详细配置

org.apache.maven.plugins

maven-shade-plugin

3.2.1

package

shade

*.*

META-INF/*.SF

com.example.demo.GuiMain

四、清理、编译、打包

项⽬结构最终如下:

打开命令提⽰符,cd到该项⽬的根⽬录下,即与pom.xml同⼀⽬录,然后运⾏mvn clean compile package,效果如图所⽰:

进⼊项⽬中的target⽬录,⽂件列表如图所⽰:

五、运⾏

将DemoGui.jar拷贝⾄指定位置,如E:\release\java下,如图所⽰ :

通过命令提⽰符运⾏java -jar DemoGui.jar,即可将程序运⾏。

或者

使用命令把SpringBoot项目打包成可运行的jar包(简洁,操作性强)

使用命令把SpringBoot项目打包成可运行的jar包(简洁,操作性强)

使⽤命令把SpringBoot项⽬打包成可运⾏的jar包(简洁,操作性强)

前⼏天接到⼀个需求,要把原系统中⼀个数据处理⼩功能搬出原系统,拉出来单独做⼀个SpringBoot项⽬,然后打成jar包扔到Windows服务器上运⾏,这样数据处理的时候如果遇到堵塞就不⾄于整个系统都当掉了,今天正好五⼀放假第⼆天,吃过楼下的紫燕百味鸡,正好没啥事写下这篇博客,希望对路过的⼈有所帮助

话不多说,直接上⼲货,⾮常简单,只需要⼀个命令即可

只需要打开IDEA下⾯的Terminal,执⾏这两个命令 :

1 、mvn package clean -Dmaven.test.skip=true

解释:把之前打过的包通通⼲掉。

2、mvn package -Dmaven.test.skip=true

解释:重新打包。执⾏完上⾯两个命令,效果如下图所⽰:

然后去你的target⽬录下找到这个jar包,如下图所⽰:

最后⼀步,把jar包扔到服务器上,创建⼀个bat批处理⽂件,这个bat⽂件主要是通过双击启动刚才SpringBoot打成的jar包

bat⽂件⾥⾯需要输⼊⼀些固定的指令,截图如下:

双击bat⽂件,即可启动项⽬了

运行jar包shell脚本

运行jar包shell脚本

运⾏jar包shell脚本

#!/bin/sh

#该⽂件必须放在jar包的⽬录下,因为是以相对路径来运⾏的。不放jar包⽬录的话,可以直接在jar_name参数写绝对路径

#start 设置三个参数

#环境

profile=test

#jar的路径和名称

jar_name=zhong-auth.jar

#远程断点端⼝

remote_address=

#end 设置三个参数

echo "运⾏$jar_name"

#查询进程,并杀掉当前jar/java进程

pid=`ps -ef|grep $jar_name|grep -v grep|awk '{print $2}'`

echo "进程为$pid"

kill -9 $pid

echo "$pid进程终⽌成功"

sleep 2

#判断jar包⽂件是否存在,如果存在启动jar包,并时时查看启动⽇志

if test -e $jar_name

then

echo "$jar_name存在,开始启动此程序..."

# 判断是否有远程断点端⼝

if test -z "$remote_address"

then

# 启动jar包

nohup java -Xms64m -Xmx128m -jar $jar_name --spring.profiles.active=$profile >/dev/null 2>&1 &

echo "远程断点端⼝为空"

else

# 启动jar包

nohup java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=$remote_address -Xms64m -Xmx128m -jar $jar_name --spring.profiles.active=$profile >/dev/null 2

echo "远程断点端⼝为$remote_address"

fi

echo "$jar_name 启动成功..."

如何运行spring项目,并打成jar包进行发布

如何运行spring项目,并打成jar包进行发布

如何运⾏spring项⽬,并打成jar包进⾏发布

⼀、创建spring项⽬

1、创建项⽬

2、创建moudule,选择java类型即可。

3、创建lib⽂件,引⼊spring的4个核⼼包spring-beans、spring-context、spring-core、spring-expression,以及核⼼包的⽇志依赖包commons.logging包

4、创建spring的配置⽂件,⽤来定义加载spring的容器。其中 xmlns:context 指的是对应依赖的包的命名空间,:后⾯不填默认指的是beans。

xmlns:xsi 指向的是xmlshema的应⽤程序。

xmlns:shemaLocation 的作⽤,使下⾯将要写的那些xml 符合 这⾥⾯依赖所对应的xmlShemaDefinition(xml命名空间的约束)

5、创建SuperManVO类

6、在spring容器配置⽂件中增加bean的配置,通过属性注⼊的⽅式,创建bean对象。

7、创建应⽤启动类,使⽤spring上下⽂的类路径加载器 加载 spring容器。从容器中获取bean对象

8、程序启动

⼆、spring项⽬打包、启动

1、打开项⽬结构设置 project structure或者

2、选择Artifacts这⼀项,进⾏设置。

3、⽣成配置,从项⽬模块中创建jar包。点击apply。使配置⽣效。

4、此时项⽬中会⽣成 META-INF ⽂件夹,⾥⾯包含 MANIFEST.MF。

该⽂件夹的作⽤。相当于⼀个信息包,⽬录中的⽂件和⽬录获得Java 2平台的认可与解释,⽤来配置应⽤程序、扩展程序、类加载器和服务 manifest.mf⽂件,在⽤jar打包时⾃动⽣成,该⽂件内部如右边图所⽰

5、⽣成artifact,应⽤产物

6、可以看到已经⽣成了jar包

7、使⽤java -jar 启动 jar应⽤,success

JAVA-jar包运行及日志输出

JAVA-jar包运行及日志输出

JAVA-jar包运⾏及⽇志输出

⼀般情况下运⾏jar包,当前是可运⾏的jar包,直接命令java -jar common.jar 按下ctrl+C ,关闭当前ssh或者直接关闭窗⼝,当前程序都会退出。

我们在命令的结尾添加 “&” ,&表⽰该程序可以在后台执⾏java -jar common.jar & 但是在当窗⼝关闭时,程序也会中⽌运⾏nohup java -jar common.jar &命令最前⾯个nohub关键字,这样程序就会不挂断运⾏命令, 当ssh终端关闭时,程序仍然在运⾏,当前程序的⽇志会被写⼊到当前⽬录的nohup.out⽂件中

我们可以改下输⼊的⽇志⽂件nohup java -jar common.jar > log.out &当前程序的⽇志会被写⼊到当前⽬录的log.out⽂件中

如果不想写⽇志,可以将⽇志重定向到 /dev/null 中,/dev/null代表linux的空设备⽂件,所有往这个⽂件⾥⾯写⼊的内容都会丢失nohup java -jar common.jar > /dev/null &标准输出就会不再存在,没有任何地⽅能够找到输出的内容

nohup java -jar common-api.jar >/dev/null 2>log.error & 只输出错误信息到⽇志⽂件,标准输出不写⼊⽇志⽂件,直接丢弃

nohup java -jar common-api.jar >/dev/null 2>&1 & 标准输出(stdout)重定向到/dev/null中(丢弃标准输出),然后标准错误输出(stderror)由于重⽤了标准输出的描述符,所以标准错误输出也被定向到了/dev/null中,错误输出同样也被丢弃了

nohup java -jar common-api.jar >log.out 2>&1 & 标准输出重定向到log.out中,然后错误输出由于重⽤了标准输出的描述符,所以错误输出也被定向到了log.out中

Maven中解决jar包冲突的三种方式

Maven中解决jar包冲突的三种方式

Maven中解决jar包冲突的三种⽅式

⾸先我们在idea中创建⼀个maven⼯程,我们只关注

pom.xml以及

External Libraries中导⼊的jar包

导⼊

spring-beans.jar

org.springframework

spring-beans

4.1.2.RELEASE

再看左侧

再看下jar包依赖

可以发现

spring-beans.jar依赖于

spring-core.jar,

spring-core.jar依赖于

commons-logging,当然这也是

spring唯⼀依赖的外部jar包

⼀、路径最短原则

那如果我们⼿动添加了⼀个

spriing-core.jar,但是版本号是

4.3.18,那么最终引⼊的依赖是哪个呢?

当然是

4.3.18版本的,这是因为写在

pom.xml是直接依赖,⽽由

spring-bean.jar引⼊的

spring-core.jar是间接依赖,直接依赖优先于间接依赖。

⼆、声明优先原则

让我们回到开始 的情况,

我们加⼊

spring-context.jar,

org.springframework spring-beans

4.1.2.RELEASE org.springframework spring-

context 4.3.18.RELEASE

我们看下依赖树:

可以发现

spring-beans.jar和

spring-context.jar都依赖于

spring-core.jar,

那猜⼀下,按上⾯这种⽅式,是导⼊了两个版本的spring-core呢?还是导⼊了⼀个版本的呢,导⼊⼀个版本的那么它的版本号是多少呢?

现在再来看导⼊的依赖

发现导⼊的是4.1.2

现在换下两个依赖的位置

org.springframework spring-context

4.3.18.RELEASE org.springframework spring-

beans 4.1.2.RELEASE

如何修改可运行Jar包,如何反编译Jar包

如何修改可运⾏Jar包,如何反编译Jar包

将可运⾏Jar包,反编译成项⽬,修改代码,再次编译,打包。

需要⼯具:jd-gui、myeclipse

具体步骤:1、使⽤jd-gui打开原始的Jar包,选择File-->Save All Sources,会⽣成⼀个zip压缩包

2、解压这个压缩包,⽣成⼀个⽂件夹,可以看到⽂件夹⾥所有的class⽂件变成了java源码⽂件。(如果最开始直接解压原始的Jar包,那么解压出来的就是class⽂件,⽽不是java源⽂件)

3、打开myeclipse,新建⼀个普通的Project项⽬,将解压后的内容拷贝到项⽬⾥。

4、此时编译会报错,因为缺少依赖的Jar包,需要找到相应的包并且导⼊。那么这些包到底是哪些呢?

使⽤jd-gui打开最原始的Jar包,在META-IN⽬录下的maven⽬录下,有所需要的依赖包。其中pom.properties中记录着Jar包的版本信息,可以直接从maven仓库下载这些包

5、最后,项⽬重新编译,并且打成Jar包。如果⽣成的源码可以运⾏,就直接编译,直接打包。

6、如果⽣成的项⽬不能运⾏,但是你只需要更改⼀两个类:

(1)编译。如果导⼊了所依赖的包,那么项⽬编译应该是没问题的,这⼀步仔细检查。然后使⽤myeclipse或者java命令编译,⽣成⼀个class⽂件。

(2)打包。简单的⽅法:使⽤rar,zip,好压等解压缩⼯具打开原始的Jar包,直接把修改的class⽂件拖进去,覆盖原来的class⽂件。复杂的⽅法:将原始Jar包,直接解压⽣成⼀个⽂件夹,解压后的是class⽂件。⽤修改后的class⽂件进⾏替换,再将这个⽂件夹压缩⽣成⼀个zip⽂件,最后将zip⽂件的后缀名改成jar,即可运⾏。 注意使⽤winrar⼯具打包时,要选择压缩⽂件格式为zip

原创⽂章,欢迎转载,转载请注明出处!

SpringBoot引入第三方jar包或本地jar包的处理方式

SpringBoot引⼊第三⽅jar包或本地jar包的处理⽅式

在开发过程中有时会⽤到maven仓库⾥没有的jar包或者本地的jar包,这时没办法通过pom直接引⼊,那么该怎么解决呢⼀般有两种⽅法

第⼀种是将本地jar包安装在本地maven库

第⼆种是将本地jar包放⼊项⽬⽬录中

这篇⽂章主要讲第⼆种⽅式,这⼜分两种情况,⼀种是打包jar包,第⼆种是打包war包

jar包

先看看jar包的结构

⽤压缩⼯具打开⼀个jar包

打包后jar包的路径在BOOT-INF\lib⽬录下

在项⽬⽬录中创建个⽂件夹⽤来存放jar包

pom⽂件中加⼊如下内容

com.ckfinder

json-lib

2.3

system

${project.basedir}/src/main/resources/jar/json-lib-2.3-jdk15.jar

groupId,artifactId,version可随便写

这时候在项⽬中运⾏是没问题了,但是使⽤命令mvn clean package打包之后BOOT-INF\lib⾥⾯并没有json-lib-2.3-jdk15.jar包,还需要pom⽂件中做如下配置:

org.springframework.boot

spring-boot-maven-plugin

true

之后再使⽤mvn clean package打包就OK了

war包

war包的⽬录如下:

jar包在WEB-INF/lib⽬录下

使⽤mvn clean package命令打包时需要在pom⽂件加⼊以下内容

org.apache.maven.plugins

maven-war-plugin

2.4

src/main/resources/jar/

WEB-INF/lib/

**/*.jar

win10系统中.jar被压缩包更改了图标后如何恢复和双击运行

win10系统中.jar被压缩包更改了图标后如何恢复和双击运⾏

⼏天前下载安装⼀个正则表达式检查器regext,结果偷偷给我安装了很多莫名其妙的软件,其中⼀个是压缩包并修改了我电脑⾥⾯的.jar图标为压缩包,卸载这个偷偷安装的压缩包后,导致我的.jar⽂件双击不能运⾏,且图标变更空⽩,百度上找了好久的资料都没有彻底解决,综合好⼏个⽹站资料终于把问题搞定了。

记录⼀下解决的步骤,为这个问题耗时3⼩时哭泣

步骤⼀:修改注册表⽂件打开路径:1)win+R键,打开“运⾏”

2)输⼊“regedit”,打开注册表

3)找到:计算机 \HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command

4)右键修改-默认

修改为以下"C:\Program Files\Java\jre1.8.0_301\bin\javaw.exe" -jar "%1" %*

(C:\Program Files\Java\jre1.8.0_301\bin\javaw.exe为⾃⼰jre的路径)

步骤⼆:设置.jar⽂件默认打开⽅式1、在⽂件上右键--属性。

2、常规选择“更改“,然后找到⾃⼰需要默认打开的应⽤。

综上两个步骤后:win10系统中.jar图标恢复成java图案和双击运⾏成功。还是运⾏不了时,请重启⼀下机器后再试试。

最后补充下相关知识:

⼀个程序打jar包后,必须要在解压软件中打开jar包双击运⾏仅对于图形化界⾯的程序起作⽤,对控制台的程序不起作⽤。

java.exe适合⽤于启动window console控制台程序

javaw.exe适合⽤于启动GUI程序

javaws.exe适合⽤于web程序。

——————————————————————

欢迎转载,希望能帮助到⼊坑的⼩⼼⼼们

转载请备注出处,谢谢

Linux下解压修改jar包并运行

Linux下解压修改jar包并运⾏

Linux下运⾏jar包,先要修改jar包的配置⽂件。修改jar包配置⽂件有以下⼏种⽅式:

⽅式⼀ 通过vim命令直接修改保存jar。超⽅便。

1.通过vim命令直接编辑jar

vim xxx.jar 该命令⾸先会列出全部⽂件,可以通过输⼊/abc来搜索,定位到对应的abc⽂件后回车进⼊配置⽂件内进⾏编辑,:wq保存。

⽅式⼆ 通过jar命令替换jar包中的⽂件(也可新增)

1. 列出jar包中的⽂件清单

jar tf dip-gw.jar

2.提取出内部jar包的指定⽂件

jar xf dip-gw.jar BOOT-INF/classes/application.yml

3.然后可以修改⽂件

vim BOOT-INF/classes/application.yml

4.更新配置⽂件到内部jar包.(存在覆盖,不存在就新增)

jar uf dip-gw.jar BOOT-INF/classes/application.yml

4.1更新内部jar包到jar⽂件

jar uf dip-gw.jar 内部jar包.jar

5.可以查看验证是否已经更改

vim dip-gw.jar

⽅式三 解压jar包,修改后重新打包jar

1.解压

unzip dip-gw.jar 2.移除jar包,最好备份

rm dip-gw.jar3.修改配置⽂件后保存,重新打包

jar -cfM0 dip-gw.jar *或者jar -cvfm0 dip-gw.jar ./META-INF/MANIFEST.MF ./

jar命令参数:

-c 创建新的存档

-f 指定存档⽂件名

-M 不配置配置清单,这样还可以使⽤maven⽣成的配置清单也就是MANIFEST.MF

-0 不进⾏压缩,如果压缩会有问题

-m 指定清单⽂件

-t 列出归档⽬录

-x 从档案中提取指定的 (或所有) ⽂件

-u 更新现有的归档⽂件

-v 在标准输出中⽣成详细输出

运⾏jar包

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档