如何把java文件打包成命令行带参数可执行的jar,without IDE,without maven,并在python下运行jar

本文介绍了如何在没有IDE和maven的情况下,将Java源代码打包成带参数的jar文件,并在Linux环境中运行。通过添加命令行参数解析、编译Java文件、编写MANIFEST.MF指定主类和依赖,然后使用jar命令打包。最后,展示了如何在Python中调用os模块运行这个jar文件。
摘要由CSDN通过智能技术生成

应用背景

问题的解决来源于问题的产生,今天就遇到了这样的问题:在linux环境下without IDE,做图像修复填充方面的工作,从github上clone了一个项目patchMatch(java source code)。通过命令javac编译和java运行,但是这样需要每次更改参数,又重新编译source code,太麻烦了。于是,我就想:能不能将source code编译成.class文件,打包成带参数的jar文件,在命令行运行jar,指定参数。像如下图所示执行一样:

$java -jar XXX.jar -param1 paramValue1 -param2 paramValue2 -param3 paramValue3

这样的话,就不用每次去更改source code的参数再编译了,只需要一次编译打包成jar,命令行里指定不同的参数就可以了,岂不是很方便,嘿嘿嘿......你还觉得麻烦的话,可以写shell脚本,把这些繁琐的命令行操作写在一起,执行shell脚本就可以了。

申明:我浏览了网络中相关问题的处理办法是:借助像eclipse的IDE,用maven插件或者Ant插件来打包jar解决问题。那么像我只运行一次java code,还去在linux下安装IDE,插件maven,岂不是划不来。所以我单纯只用java中jar命令。

 文件说明

 首先我列出我的文件结构,方便理解。看下source file有4个java文件:PatchMatchMain.java ; Inpaint.java ; NNF.java ; MaskedImage.java.

./lib/commons-cli-1.4.jar是我自己创建的文件夹(后面有用),放进去的第三方包:包括了命令行参数包装和解析的函数,带参数的jar必须要导入这个包,我给出下载地址:http://commons.apache.org/proper/commons-cli/download_cli.cgi,下载Commons-cli-1.4-bin.tar.gz,解压就有commons-cli-1.4.jar这个包了

其中文件的调用顺序为PatchMatchMain(主入口,要导入commons-cli-1.4.jar) 调用 Inpaint,Inpaint调用NNF和MaskedImage,NNF调用MashedImage。

实现步骤

 先来明确下操作步骤:

  • 首先我应该把source file的主入口PatchMatchMain.java添加带参数并且能解析的部分;
  • 把所有的.java编译成.class文件,编译过程引入了外部包需要指定外部包的位置;
  • 用jar命令把编译好的.class文件打包成jar文件,需要手动编写清单文件MANIFEST.MF指定程序主入口和外部包位置(因为我们没有用IDE和maven插件)
  • java -jar运行打包好的带参数的jar

1.添加带参数并且能解析的部分

首先导入需要的包:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值