java项目打包成可运行的jar,main方法带参数

时间:2022-03-24 21:13:21

转载

原文地址:http://www.cnblogs.com/neillee/p/6063808.html#commentform

将 java 项目打包成可运行的 jar 包(main 函数带参数),并上传到 linux 服务器上运行

 

一、概述

java项目有两种架构,一种是 B/S 架构的,一种是 C/S 架构的。
对于 B/S 架构来说,我们常见的 java ee 即是 B/S 架构,通常,开发人员会在本地进行开发,然后将项目打包成 war 文件,上传至服务器,供调用。
而对于 B/S 架构来说,通常即是里面有个主方法,就是我们常写的 java 项目/程序。通常,开发完之后,将项目打包成 jar 包,随后上传至服务器,供调用。
本文,针对后者进行介绍。

二、需求描述

一个 java 项目,分包存放多个 java 文件,java 文件中,有依赖第三方库(从外部导入的 jar 包)。其中,主函数(项目入口)位于项目的一个包内,主函数必须带有四个参数。

三、导出 jar 包步骤

3.1 确保正确地写完项目

这一步就不消说了。

3.2 选中项目,点击右键

鼠标单击项目名称,选中后u,单击右键,随即弹出菜单列表

java项目打包成可运行的jar,main方法带参数

3.3 选择export

在弹出的列表中,选择"Export...",随即弹出 Export 的窗口

java项目打包成可运行的jar,main方法带参数

3.4 选择导出可运行的 jar 文件

在弹出的 Export 窗口中,点开 java ,选择 Runable JAR file 选项。

java项目打包成可运行的jar,main方法带参数

  • JAR file,单纯只是将项目打包成 jar 包,一般用于java lib的导出,用于给其他人依赖开发使用
  • Runable JAR file,顾名思义,可运行的 jar 包,能够被运行(因为随后要指定项目入口)

选择 Runable JAR file 选项,点击 Next ,弹出 Runable JAR file Export 窗口

3.4 配置 JAR 包

在弹出的 Runable JAR file Export 窗口中,

java项目打包成可运行的jar,main方法带参数

  • 修改 Launch configuration,选择为你的项目的入口,即有主方法的类
  • Export destination ,选择你想要导出的目录
  • Library handling,几个选项顾名思义,不做赘述
  • 点击 Next

3.5 完成

导出过程可能会消耗一定时间,地下有绿色进度条提醒进度。等待片刻,即可完成整个过程。

java项目打包成可运行的jar,main方法带参数

若项目有依赖第三方包,则有可能会弹出以下警示框,点击 OK 即可。

java项目打包成可运行的jar,main方法带参数

由于项目中可能存在一些不规范之初,在完成此步骤后,也许会弹出一个警告框。点击 Details 可查看详情,点击 OK 进入导出过程。

java项目打包成可运行的jar,main方法带参数

在 3.4 步骤中选择的目标目录中,即可看到导出的 jar 包。

java项目打包成可运行的jar,main方法带参数

四、可运行 JAR 文件结构解析

4.1 解压上述步骤得到的 JAR 包

文件目录结构见下图:

java项目打包成可运行的jar,main方法带参数

  • META-INF 文件夹存放着项目的配置信息:
    • maven依赖(如果有的话, META-INF 中包含了 maven 文件夹)
    • 项目的 MANIFEST 信息(存放在 META-INF/MANIFEST.MF )Manifest-Version、Class-Path、Main-Class,注意它们后面的内容与冒号之间均有一个空格,这个空格必不可少
  • 其他文件夹都存放着 .class 文件(结构类似exlipse项目中的bin目录),若有第三方依赖,则也有第三方包的 .class 文件

java项目打包成可运行的jar,main方法带参数

四、服务器上运行

将文件上传至服务器的步骤,本文就不赘述了。此处简单讲解一下运行过程。
进入可运行的 jar 包目录,此处打开命令行,键入命令java -jar JSTUNServer.jar 5000 192.168.2.1 5001 192.168.2.3java -jar [jar包] [参数1 参数2 参数3...]),敲回车,即可运行。

java项目打包成可运行的jar,main方法带参数

由于我选用的实例代码需要特殊的环境,此处报的错与本文论述的内容无关。此处就证明了上述过程的正确性。