windows下jar无法在linux下运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows下jar无法在linux下运行相关的知识,希望对你有一定的参考价值。

参考技术A Java 程序是跨平台的,可以在不同的操作系统中运行,但需要满足一定的条件。如果您在 Windows 中编译并打包了一个 Java 程序,然后在 Linux 中运行时出现问题,可能是以下原因之一:

Java 版本不兼容:在 Windows 中使用的 Java 版本可能与 Linux 中不一致。请确保在 Windows 中使用的 Java 版本与 Linux 中的 Java 版本相同或兼容。

库依赖不兼容:如果您的 Java 程序使用了第三方库,那么这些库可能在 Windows 和 Linux 中有不同的实现或版本。请确保在 Windows 和 Linux 中使用的库版本相同或兼容。

路径分隔符不同:在 Windows 中,路径分隔符是“\”,而在 Linux 中,路径分隔符是“/”。如果您的 Java 程序在 Windows 中使用了硬编码的路径分隔符,则在 Linux 中可能无法正常工作。请使用 Java 提供的跨平台路径分隔符 File.separator 代替硬编码的路径分隔符。

换行符不同:在 Windows 中,换行符是“\r\n”,而在 Linux 中,换行符是“\n”。如果您的 Java 程序在 Windows 中使用了硬编码的换行符,则在 Linux 中可能无法正常工作。请使用 Java 提供的跨平台换行符 System.lineSeparator() 代替硬编码的换行符。
为了解决这些问题,您可以将 Java 程序的源代码和依赖项(例如第三方库)移植到 Linux 平台,并在 Linux 中重新编译和打包程序。这样可以确保程序能够在 Linux 中正常运行,并且可以充分利用 Linux 提供的各种优势。

windows下的java项目打jar分别编写在windows与linux下运行的脚本( 本人亲测可用!)

前言:

最近公司做了一个工具,要将这个工具打包成一个可运行的程序,编写start.bat和start.sh在windows和linux下都可以运行。

在网上找了很多资料,最后终于找到一个可靠的资料,记录下来,分享给大家,也算是自己的一个总结。

吃水不忘挖井人,感谢这位老哥的文章:https://blog.csdn.net/u011752272/article/details/78560715

不多bb直接开始干活!

一、项目的结构

由于只是测试,里面的东西不复杂,可以用很简单来说明,创建的是maven项目,当然普通的java项目也是可以的。

二、在本地跑通确认无误后打成jar放到本地,具体步骤为:

2.1在桌面创建一个名为zztest的文件夹。

右击项目-->Export-->Java-->JAR file后点击next,如下图:

2.2  .settings  .classpath  .project  这三个文件不要勾选,千万不要勾选!

  选择生成jar包的路径为2.1创建的zztest目录后点击next,如下图:

2.3什么都不用动,继续点击next,如下图:

2.4点击Browse...设置main方法运行的主类后点击ok后点击finish,如下图:

如果有警告的话也不用理,直接确定即可!

三、查看jar

在zztest中已经存在名为test01.jar的jar包,如下图:

四、解压(如果项目中有外部jar的引用需要在此添加配置,如果没有请直接忽略掉这一步进入第六步!!!)

右击直接解压这个test01.jar到当前文件夹,如下图:

五、配置MANIFEST.MF文件(如果项目中有外部jar的引用需要在此添加配置,如果没有请直接忽略掉这一步进入第六步!!!)

5.1

打开META-INF下的MANIFEST.MF文件

Class-path后面有一个空格请注意,空格后面紧跟jar包的路径,其中lib目录与src目录同级

如下图:

如果有由于本文没有测试引用多个jar的情况,所以要引用多个jar请尝试:

Class-path: lib/test01.jar lib/test02.jar

5.2将修改过的MANIFEST.MF替换掉jar包里面META-INF下的MANIFEST.MF

六、windows下——编写start.bat脚本

在zztest目录下创建一个文本文件,在里面增加一段代码,后保存,名字为start.bat后保存,确定保存,如下图:

最终的文件结构如下图(如果项目中没有引用外部的jar,没有执行第四步,第五步,只会有一个test01.jar与start.bat):

 双击start.bat就可以运行,结果如下图。至此windows下的就已经结束!

七、linux下——Linux下的start.sh启动脚本编写

本文使用的是SecureCRT与SecureFX操作linux终端

7.1操作SecureSecureFX将jar放入指定文件夹如下图:

7.2输入unzip test01.jar将jar解压(一定要解压,才能够运行,我也不知道解压的原理......),如下图:

7.3在SecureCRT命令行中创建一个start.sh脚本并在里面指定执行main方法所在的java类

vi start.sh    注释:创建一个名字为start.sh的脚本,结果如下图:

按"i"进入编辑模式编辑文件如下图所示:

#!bin/bash

java -Xms50m -Xmx250m com.zhanzhuang.windows_and_linux.WAL

exit

然后按一下esc

之后按住shift后加:

可以松手了,输入wq点击回车即可

------------------------------------------------------------------------------

光标就变成如下图所示

 7.4  sh start.sh执行脚本结果如下图所示

 

至此,linux下的步骤也讲解完毕。感谢各位小伙伴收看!

 如果在linux下运行的工程里面有引用的外部jar包则start.sh脚本内容如下

 

以上是关于windows下jar无法在linux下运行的主要内容,如果未能解决你的问题,请参考以下文章

linux安装jar命令

linux下怎么执行.jar程序

windows/linux下部署jar包

java -jar在Linux下运行问题

请问:在windows下双击.jar文件无法运行,但cmd下-jar命令可以运行

window下部署jar包,后台一直运行