记一次 Eclipse 打包的辛酸历程

news2025/1/12 0:46:32

文章目录

    • 1:背景
    • 2 maven 工程
    • 3 普通工程
      • 3.1 打可执行的 jar
      • 3.2 打普通 jar
    • 4: 运行 jar 包

1:背景

偶然的境况下,被迫使用了 Eclipse 进行代码。遇到的代码也有点奇怪,main 方法启动 java 工程,里面封装 Tomcat ,有点类似 SpringBoot 的封装。然后在打包的时候需要了一些问题。

2 maven 工程

1:安装 maven 打包插件
 war 包:需要 maven-plugin-war 
 jar 包:需要 maven-assembly-plugin

2:
eclipse 打包: 右键 maven-clean ,maven-build: Goals 中填入 package ,Update Snapshots 和 Skip Tests 打勾 ,执行
命令行打包:找到对应 pom.xml 文件,cmd 进入,先 mvn clean,再 mvn package -Pqa -Dskip Tests
 ps:dev(开发)、qa(测试)、pre(预发)、生产正式(prod)等配置文件,-P 参数,没有则不加

3 普通工程

很显然,我遇到的是普通工程,而且 JVM 配置了启动参数。经过很多时间的尝试,参考了很多资料,问了一些人,才得以成功。

3.1 打可执行的 jar

选Runnable JAR file点Next
在这里插入图片描述
选择主函数,选择导出路径,第三方依赖选择第三个,点Finish。
第一个Extract required libraries into generated JAR 为提取extract需要的依赖的库jar合成到jar文件里,引用的jar提取class到导出的jar里;
第二个Package required libraries into generated JAR 则仅仅打包依赖库到jar文件;
第三个Copy required libraries into a sub-folder next to the generated JAR 则把依赖库放到一个文件夹中,生成 jar 同时单独生成一个依赖包
ps:对于我遇到的这个项目,我开始一直选择的是第一个,打完 jar 后一直运行不成功,直到有人选择第三个成功了。
在这里插入图片描述

3.2 打普通 jar

1:准备主清单文件 “MANIFEST.MF”,
由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF
类似下面的结构,可以参考打可运行 jar 解压后的文件

    /**
     *  注意点:
     *  1:Class-Path: 和Main-Class: 后边都有一个空格,必须加上,否则会打包失败,错误提示为:Invalid header field;
     *  2:建立的  MANIFEST.MF 要和依赖的 lib 文件夹在同一级,且打包文件也要选择在这一级,否则将会出现“Exception in thread “main”
     *  3:如果导入的第三方jar包太多的话,同一行的中间用一个空格隔开,如果换行后,第一个前面要有两个空格
     *  4:Main-Class后面是类的全地址,写src 下的全部包名.类名
     *  5:写完Main-Class后一定要回车(即最后一行是空白行),让光标到下一行,这样你生成的jar包才能找到你的主class去运行
     */
Manifest-Version:  1.0
Class-Path: lib/commons-codec.jar lib/commons-httpclient-3.1.jar
   lib/commons-logging-1.1.jar lib/log4j-1.2.16.jar lib/jackson-all-1.8.5.jar
Main-Class:  main.KillCheatFans

2:选择JAR file->Next
在这里插入图片描述
3:选择打包的目录,导出文件选择第一项,和 jar 包存放的位置(和主清单以及 lib 在同一级)

  • Export generated class files and resources 表示只导出生成的.class文件和其他资源文件
  • Export all output folders for checked projects 表示导出选中项目的所有文件夹
  • Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了
  • Export refactorings for checked projects 把一些重构的信息文件也包含进去
    在这里插入图片描述
    4:点Next
    在这里插入图片描述
    5:选择刚刚自定义的配置文件。点Finish ,等待打包完成
    在这里插入图片描述

4: 运行 jar 包

上面针对这个项目的,打可执行包,以及创建主清单,打jar 包,然后 去运行,我都尝试成功了。另外,在这个项目启动的时候,带了一些 JVM 参数,需要在启动的时候配置。在 CMD 启动后,输入类似下面的内容即可(不一定有, 没有的的话 java -jar 就行)

// 注意:有些喜欢在main 方法配置${workspace_loc} ,这个就是当前项目下,换成直接路径即可
java --Xms2048M -XX:Persize=256M   -D  ...   -D ...      -jar server.jar

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/75084.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

音频声音信号

音频信号是模拟信号,我们需要将其保存为数字信号,才能对语音进行算法操作,WAV是Microsoft开发的一种声音文件格式,通常被用来保存未压缩的声音数据。 通道数:同时有个几个设备在进行音频的采样;采样频率&a…

Django连接MySQL与正反向迁移命令

目录 连接MySQL 方法一:pymysql连接 方法二:mysqlclient 迁移命令 连接MySQL 方法一:pymysql连接 第一步:修改settings.py配置文件中的DATABASES: DATABASES {default: {ENGINE: django.db.backends.mysql,HOS…

【车载开发系列】UDS诊断---动态定义DID($0x2C)

【车载开发系列】UDS诊断—动态定义DID($0x2C) UDS诊断---动态定义DID($0x2C)【车载开发系列】UDS诊断---动态定义DID($0x2C)一.概念定义1)DID定义方式2)DID失效条件二.应用场景三.报…

【Python游戏】今天小编用Python实现了一个植物大战僵尸小游戏 | 附源码

前言 halo,包子们下午好 今天给打击整一个植物大战僵尸 无广告版本 哈哈 说实话,现在的小游戏很多都是有广告,多少有点难受 今天给大家直接安排 相关文件 关注小编,私信小编领取哟! 当然别忘了一件三连哟~~ 源码点…

java基于Springboot的社区维修平台-计算机毕业设计

项目介绍 系统管理也都将通过计算机进行整体智能化操作,对于社区维修平台所牵扯的管理及数据保存都是非常多的,例如住户管理、社区公告管理、维修工管理、维修订单管理、接单信息管理、订单信息管理、在线沟通管理、举报信息管理、留言板管理、系统管理…

4G远程智能巡检摄像机功耗测试对比

对于一款输电线路监控设备,由于装在铁塔上面,对于功耗,电网上面的应用,尤为重要,如何得做到低功耗,一直大家研究的地方,解决了功耗,基本产品成功了一半,而合方圆在电网行…

对称加密算法(一)(替换算法,Caesar, Playfair, Hill Cipher,Polyalphabetic Cipher)

文章目录Symmetric Cipher ModelSubstitution TechniquesCaesar CipherMonoalphabetic CiphersPlayfair CipherHill CipherPolyalphabetic CipherVigenere CipherVernam CipherOne-Time PadReferences对称加密,也被称为传统加密、单钥加密或私钥加密,是 …

Flink系列-1、流式计算简介

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 大数据系列文章目录 官方网址:https://flink.apache.org/ 学习资料:https://flink-learning.org.cn/ 目录数据的时效性…

【pytorch】使用pytorch自己实现LayerNorm

pytorch中使用LayerNorm的两种方式,一个是nn.LayerNorm,另外一个是nn.functional.layer_norm 1. 计算方式 根据官方网站上的介绍,LayerNorm计算公式如下。 公式其实也同BatchNorm,只是计算的维度不同。 下面通过实例来走一遍公式 假设有如下的数据 …

JQuery 高级

目录 1. 动画 1. 三种方式显示和隐藏元素 1. 默认显示和隐藏方式 2. 滑动显示和隐藏方式 2. 遍历 1. js的遍历方式 2. jq的遍历方式 5. 插件:增强JQuery的功能 1 . 实现方式: 1. $.fn.extend(object) * 增强通过Jquery获取的对象的…

java计算机毕业设计ssm学生宿舍管理系统efyug(附源码、数据库)

java计算机毕业设计ssm学生宿舍管理系统efyug(附源码、数据库) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff0…

取余,模运算,余数的正负问题,1497. 检查数组对是否可以被 k 整除

首先,我们来看数学中对余数的定义 0到除数之间的整数,所以当除数是负数的时候,余数也是负数。 举个例子: 接下来,我们看计算机中余数是怎么求的??? 所有的语言和计算器都遵循了让商…

防火墙豁免实验

♥️作者:小刘在C站 ♥️每天分享云计算网络运维课堂笔记,疫情之下,你我素未谋面,但你一定要平平安安,一 起努力,共赴美好人生! ♥️夕阳下,是最美的,绽放,愿…

单商户商城系统功能拆解44—应用中心—小程序直播

单商户商城系统,也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法,例如拼团,秒杀,砍价,包邮…

shell 基本语法第四讲之(find(文件查找)、xargs(字符串拼凑)、sed(处理文本)、awk(文本处理)、crontab(系统定时器))

20、find(文件查找) 格式 find pathname -options [-print -exec -ok …] 命令说明举例-name按照文件名查找文件。find . -name “1.txt”-perm按照文件权限来查找文件。find . -perm 660-user按照文件属主来查找文件。-group按照文件所属的组来查找文件。-mtime -n n按照文件…

西电计网实验

《计算机通信与网络》网络实验 阅读须知:计网六次实验均已通过线下操作进行验收(后面两次善意线上了),写报告由于描述流程困难,故采用eNSP对实验内容进行复现,故此报告实验的过程分析都是基于eNSP&#xf…

MBSE和刚亮相的B-21“突袭者”隐形轰炸机

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> 12月2日,B-21“突袭者”隐形轰炸机举行揭幕仪式。 摘译一篇来自制造商Northrop Grumman公司(诺斯罗普格鲁曼公司)网站上的文章片段。 利…

stm32cubemx hal学习记录:CAN

一、实验内容 RM C板,can1给can2发送数据 二、CAN总线简介 1、控制器局域网络:Controller Area Network 2、异步半双工通信 3、总线制 CAN由一对差分对(两条线)CANH和CANL组成 CANH电压比CANL高视为逻辑0(显性电…

IDEA插件系列(3):Easy Javadoc插件——快速生成javadoc文档注释

1.插件介绍 Easy Javadoc插件。 能帮助开发者快速生成类、方法、属性等中文javadoc 2.安装方式 第一种安装方式是在线下载安装插件。 第二种安装方式是使用离线插件进行安装。 插件下载地址:https://plugins.jetbrains.com/plugin/12977-easy-javadoc 3.使…

梦开始的地方—— C语言预处理+编译过程

文章目录C语言程序的编译(预处理)1.编译和链接1) 编译的几个阶段预编译阶段编译阶段汇编阶段2) 链接2. 预处理1) 预定义符号2) #define3) #和##4) 带副作用的宏参数5) 宏和函数对比3. 常见预处理命令1) #undef2) 命令行定义3) 条件编译4) 文件包含5) 实现offsetofC语言程序的编…