解压jar包linux 解压jar包的命令

2025-03-05 08:38 - 立有生活网

Apache Zeppelin 迁移 - Jar 包冲突解决与思考

最近整个公司大数据集群迁移(cdh -> ambri hdp),随之 Zeppelin 也需要迁移,由于各个组件版本有变化,且 Zeppelin 源码是有过改动的,迁移起来很麻烦。经过一周的折腾,终于把 Zeppelin 从 cdh 环境迁移至 hdp 环境。同时,在解决问题期间,对 Ja 类加载,jar 冲突问题有了更进一步的认识。

解压jar包linux 解压jar包的命令解压jar包linux 解压jar包的命令


解压jar包linux 解压jar包的命令


经过配置参数修改,迁移过去 hive 没问题,spark 运行报错,经过一周的折腾终于解决,主要是版本依赖冲突问题。

现象:跑 spark sql 报 NoSuchModError 错误如下:

连 hive metastore 后调用 close() 方法, FacebookServ( from: libfb303.jar ) 最终调用 T.sendBaseOneway ( to: libthrift.jar )

查看 libthrift 源码, 0.9.3 版本有 sendBaseOneway , 而 0.9.2 版本没有。

结论: libfb303.jar 的 f解释下 >temp.txtacebookserv 调用了 libthrift 0.9.3 版本的中的方法,而 JVM 加载了 0.9.2 版本, 导致 NoSuchModError。

查看 zeppelin 源码, zeppelin-spark.jar , zeppelin-spark-dependencs.jar 都 shaded 了 libthrift 这个 jar 包。

jar 所在目录:

这里也有一个取巧的方法,将 jar 包解压删除 thrift 并重新打包。通过 linux 下 jar 命令即可完成。

如果深入理解 Ja 类加载机制,jar包冲突相关原因,对定位解决这类问题有很大的帮助 。

一般来说遇到: ClassNotFoundExpection , NoClassDefFoundError 和 NoSuchModError ,有可能是包冲突造成的。

读完这个 重新看待Jar包冲突问题及解决方案 [3]收获良多,总结部分笔记,对于冲突,存在两个场景:

这两个场景的存在,会导致 JVM 加载到了错误的类,导致与预期场景不一致出现上面描述的错误等 ,导致出现 ClassNotFoundExpection , NoClassDefFoundError 和 NoSuchModError 等异常。

因为 men 的传递依赖机制,men 引入依赖类似于图的遍历,从子往父溯源,引入所有相关依赖。这样为开发节省了效率,但同时可能引入不同版本的 jar 包,导致在运行时出现包冲突。存在多个依赖,men 具体选择引入哪个依赖,规范来源于仲裁机制,仲裁机制如下:

常见的解决依赖冲突的办法有两个:

还有一种JAVA_HOME="linux下jdk的安装目录"冲突是同样的类,出现在不同的包里面,例如 A 和 B 包都有类 C,JVM 在加载 C 的时候到底是选择 A 还是 B。这个选择取决于:

如果遇到 ClassNotFoundExpection , NoClassDefFoundError 和 NoSuchModError ,有可能是包冲突造成的。

[1]

[2] classnotfoundexception-vs-noclassdeffounderror

[3] 重新看待Jar包冲突问题及解决方案

linux使用.sh文件启动.jar文件?

如果想将某个作业调回前台控制,只需要 fg + 编号即可。

linux下执行jar文件方法:命令行下进入文件目录,执行ja -jar file.jar即可,也可在桌面创建一个启动器,在命令栏填写相关的命令:ja -jar /file路径/file.jar,这样在桌面双击即可打开该jar文件

fg 23

在jar同目录下创建 start.sh文件内容如下:

export JAVA_HOME=/usr/local/ja/jdk1.8.0_144

$JAVA_HOME/bin/ja -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m -jar test.jar >/dev/null 2>&1 &

test.jar=需要运行jar文件

linux使用.sh文件启动.jar文件?

如果想将某个作业调回前台控制,Ja -jar shareniu.jar只需要 fg + 编号即可。

linux下执行jar文件方法:命令行下进入文件目录,执行ja -jar file.jar即可,也可在桌面创建一个启动器,在命令栏填写相关的命令:ja -jar /file路径/file.jar,这样在桌面双击即可打开该jar文件

在jar同目录下创建 start.sh文件内容如下:

export JAVA_HOME=/usr/local/ja/jdk1.8.0_144

$JAVA_HOME/bin/ja -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m -jar test.jar >/dev/null 2>&1 &

test.jar=需要运行jar文件

Linux 后台启动运行jar包

1、首先基本的运行 jar 包命令如下

这个命令会锁定命令窗口,当窗口关闭时,程序也就自动退出了,所以需要让 jar 包后台运行。

2、后台启动运行

3、指打包信息如下:定输出文件

如下,xxx.log 就是指定的输出文件,如果不指定,默认在 jar jar cvfm classes.jar mymanifest -C foo/ .包所在目录,创建 nohup.out 文件。

Jar包怎么打开,是解压吗?之后再压缩(并将RAR改JAR)就是原文件了吗?

先来解释下这个三个问题的区别 [1]:command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。

Jar,是ja手机里面的一种应用程序.只能在某种手机上使用.是不能解压的.如果你使用解压工具会将其损坏,更不用说还原源文件了.(就像现在的安卓手机,所用的都是jpk这种格式)

linux打开jarxml

启动执行文件:./starnetstat -nlp |grep :81t.sh

Linux 运行jar包命令如下:

方式一:

特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出

那如何让窗口不锁定?

方式二

ja -jar shareniu.jar &

特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。

方式三

nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行

当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。

方式四

nohup ja -jar shareniu.jar >temp.txt &

command >out.file

可通过jobs命令查看后台运行任务

jobs

那么就会列出所有后台执行的作业,并且每个作业前面都有个编号。

查看某端口占用的线程的pid

如果忘了进程号,可以通过如下命令来查看当前运行的jar包程序进程号

ps -ef|grep xxx.jar

或者 ps -aux | grep ja

//关闭进程

kill -s 9 24204

24204代表上一步查出的进程ID

linux打开jarxml

Linux 运行jar包命令如下:

方式一:

特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出

那如何让窗口不锁定?下面这段配置取自 Zeppelin pom,声明选择的依赖的 ro 版本,同时排除了部分依赖 如 netty。

方式二

ja -版本有所变化,当然得重新编译 Zeppelin ,指定下 spark hadoop 大版本,重新编译:jar shareniu.jar &

特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。

方式三

nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行

当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。

方式四

nohup ja -jar shareniu.jar >temp.txt &

command >out.file

可通过jobs命令查看后台运行任务

jobs

那么就会列出所有后台执行的作业,并且每个作业前面都有个编号。

查看某端口占用的线程的pid

如果忘了进程号,可以通过如下命令来查看当前运行的jar包程序进程号

ps -ef|grep xxx.jar

或者 ps -aux | grep ja

//关闭进程

kill -s 9 24204

24204代表上一步查出的进程ID

jar解压后 如何把解压出来的文件夹 重新编译成jar ???

建立一个工程,然后按照包名,把反编译的文件放到相应的package下,如果反编译的没有问题的话,会生成相应的class然后在用jar打包。

用一个把编译软件,反编译其中的一个,然后保存所有生成一个.rar文件,然后用Eclips导入就可以了。

解压出来后再压缩,你的方法是对的,但是注意,不是把解压后的文件夹进行压缩,是进行到文件夹里,选中所有的文件,右键,添加到压缩文件,压缩格式选zip,压缩文件后缀改成jar,点确定就行了。我经常这么干。

你可以新建一个工程,然后把里面的代码拷贝出来修改,改完用eclipse从新打成jar包,之想到这个方法

可以啊,

你用rar,或7zip打开jar,不用解压,直接在里面改那个文件就可以.然后关闭保存.

如果是用ja命令的话,就是

jar 命令

如果修改某个文件,用7z取出来、处理完了,再放回去就好了

请参考

Usage: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...

Options:

-c create new archive

-t list table of contents for archive

-x extract named (or all) files from archive

-u update existing archive

-v generate verbose output on standard output

-f specify archive file name

-m include manifest rmation from specified manifest file

-e specify application entry point for stand-alone application

bundled into an executable jar file

-0 store only; use no ZIP compression

-M do not create a manifest file for the entries

-i generate index rmation for the specified jar files

-C change to the specified directory and include the following file

If any file is a directory then it is processed recursively.

The manifest file name, the archive file name and the entry point name are

specified in the same order as the 'm', 'f' and 'e' flags.

Example 1: to archive two class files into an archive called classes.jar:

jar cvf classes.jar Foo.class Bar.class

Example 2: use an existing manifest file 'mymanifest' and archive all the

files in the foo/ directory into 'classes.jar':

……

步骤1:把该jar文件重命名回z&代表在后台运行。ip文件。

步骤2:解压该zip

步骤3:eclipse->import->ja project

步骤4:检查有没有错误,有错误解决,解决不了再来问

步骤5:eclipse->export->ja->jar

在RAR继续改进,如何让窗口关闭时,程序仍然运行?配置里面转化格式

Apache Zeppelin 迁移 - Jar 包冲突解决与思考

linux授权:chmod u+x start.sh

最近整个公司大数据集群迁移(cdh -> ambri hdp),随之 Zeppelin 也需要迁移,由于各个组件版本有变化,且 Zeppelin 源码是有过改动的,迁移起来很麻烦。经过一周的折腾,终于把 Zeppelin 从 cdh 环境迁移至 hdp 环境。同时,在解决问题期间,对 Ja 类加载,jar 冲突问题有了更进一步的认识。

nohup ja -jar shareniu.jar &

经过配置参数修改,迁移过去 hive 没问题,spark 运行报错,经过一周的折腾终于解决,主要是版本依赖冲突问题。

现象:跑 spark sql 报 NoSuchModError 错误如下:

连 hive metastore 后调用 close() 方法, FacebookServ( from: libfb303.jar ) 最终调用 T.sendBaseOneway ( to: libthrift.jar )

查看 libthrift 源码, 0.9.3 版本有 sendBaseOneway , 而 0.9.2 版本没有。

结论: libfb303.jar 的 facebookserv 调用了 libthrift 0.9.3 版本的中的方法,而 JVM 加载了 0.9.2 版本, 导致 NoSuchModError。

查看 zeppelin 源码, zeppelin-spark.jar , zeppelin-spark-dependencs.jar 都 shaded 了 libthrift 这个 jar 包。

jar 所在目录:

这里也有一个取巧的方法,将 jar 包解压删除 thrift 并重新打包。通过 linux 下 jar 命令即可完成。

如果深入理解 Ja 类加载机制,jar包冲突相关原因,对定位解决这类问题有很大的帮助 。

一般来说遇到: ClassNotFoundExpection , NoClassDefFoundError 和 NoSuchModError ,有可能是包冲突造成的。

读完这个 重新看待Jar包冲突问题及解决方案 [3]收获良多,总结部分笔记,对于冲突,存在两个场景:

这两个场景的存在,会导致 JVM 加载到了错误的类,导致与预期场景不一致出现上面描述的错误等 ,导致出现 ClassNotFoundExpection , NoClassDefFoundError 和 NoSuchModError 等异常。

因为 men 的传递依赖机制,men 引入依赖类似于图的遍历,从子往父溯源,引入所有相关依赖。这样为开发节省了效率,但同时可能引入不同版本的 jar 包,导致在运行时出现包冲突。存在多个依赖,men 具体选择引入哪个依赖,规范来源于仲裁机制,仲裁机制如下:

常见的解决依赖冲突的办法有两个:

还有一种冲突是同样的类,出现在不同的包里面,例如 A 和 B 包都有类 C,JVM 在加载 C 的时候到底是选择 A 还是 B。这个选择取决于:

如果遇到 ClassNotFoundExpection , NoClassDefFoundError 和 NoSuchModError ,有可能是包冲突造成的。

[1]

[2] classnotfoundexception-vs-noclassdeffounderror

[3] 重新看待Jar包冲突问题及解决方案

我国古代对银河系的俗称是_我国古代银河系的

手游科举 从地面上看,夏天的夜晚星空有一条银白色的带状物,像一条银色的天河一样,古时候的人们就叫他为银河。后来随着科技的进步,我们知道了那其实是由无数的星星组成的一个星系,所···

耳朵很干净但是一晃头就响_耳朵很干净但是一

头部使劲,头就嗡嗡响 这耳朵嗡嗡响,实际上就是耳鸣的。也就是说如果耳鸣的话,那么你必须应该到医院好好的去检查一下。应该是让医生好好的给你检查一下确定到底是因为什么原因引起的。···

选什么专业好 二本女生选什么专业好

大学读什么专业比较好 一、现在上大学学什么专业好,要看个人的兴趣截至2019年12月,批准我国的24所高校新开设应用经济学专业。这表明培养符合实际需要的经济学人才,是变得更加迫切。应用···