使用IDEA将Java/Kotliin工程导出Jar包的正确姿势
作者:kross 发布时间:2022-10-18 17:39:34
导出的 Jar 包无法运行?
导出的 Jar 包找不到 Main class?
大概是我对导出 Jar 包的理解不深吧,反正一直不太懂 IDEA 导出 Jar 包的界面和功能到底怎么用。但总算是自己摸索出了正确的方法。
第一步:添加构建
首先要介绍的是 Artifact 这个概念,可以理解为一种构建,比如说 Android Studio 构建出来的 Artifact 就是 Apk 文件。Java 程序当然是可以构建出 Jar 包的。
在一个 Java 或 Kotlin 工程中,在 IDEA 的顶部的工具栏上,找到 Project Structure 图标。
或者在,File -> Project Structures...
也可以找到。
点击,打开 Project Structure 窗口。
如下图所示,Project Structure 窗口左侧可以选择 Artifacts ,右侧点击加号,选择 Jar -> Empty
在窗口的右侧,就会出现一个可以编辑的界面。如下图所示:上面的红框是填写 Jar 包的名称,左下的红框表示这个 Jar 包里面包含什么内容,右下的红框表示有什么东西是可以放进去的。
第二步:添加 Manifest
在 Jar 里面没有添加任何东西的时候,点击 xxx.jar ,底部会显示 添加 Manifest 的操作按钮。
添加完,并指定 Main class 就可以了。如下图所示:
第三步:添加 Jar 包内容
接下来就是最关键的操作了。
对于工程中的源码,一般都是显示为 'xxxx' compile output,对它们的操作为,右键,选择 Put into Output Root。
对于工程中依赖的库什么的,就右键,选择 Extract Into Output Root。
最终会得到下面这样的结果。
第四步:构建
经过上面的步骤,一个 Artifact 的配置就做好了。我们就可以执行它。
在菜单栏,Build -> Build Artifacts...
点击 Build 即可构建。
生成的东西应该会在 output 或 out 或 build 之类的目录里面。
赶快执行一下 java -jar yourJar.jar
试试看吧!
来源:https://segmentfault.com/a/1190000021956096


猜你喜欢
- 前言gps定位服务的学习是这段时间gps课程的学习内容,之前老师一直在将概念,今天终于是实践课(其实就是给了一个案例,让自己照着敲).不过在
- 本文实例讲述了Android实现ListView异步加载的方法。分享给大家供大家参考,具体如下:@Override publi
- 本文实例讲述了C# winform实现右下角弹出窗口结果的方法。分享给大家供大家参考,具体如下:using System.Runtime.I
- 最终效果如下大概就几个步骤1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4.项目准备 5.编写 Dock
- String类中的concat()方法的使用concat(String str)用法concat(String string) 返回值是St
- 前言背景平时开发中遇到根据当前用户的角色,只能查看数据权限范围的数据需求。列表实现方案有两种,一是在开发初期就做好判断赛选,但如果这个需求是
- 1. 多行编辑先来体验一下从xml文件拷贝字段新建实体对象一般我们为了新建多表连接后映射的 ResultMap ,耗费不少时间,那么我们就来
- 类:NameII 权限:public方法:main 权限:publi
- using System;using System.Collections.Generic;using System.Globalizati
- Collection遍历方式Collection集合遍历的方式有三种:迭代器foreach/增强for循环lambda表达式迭代器遍历迭代器
- 1.例如下面的代码片段,Toast类的第一个参数接受一个Context对象:@Override protected Dialog onCr
- 汉诺塔问题是学习递归的入门问题,这里用C#简单实现了一个汉诺塔之间传递盘子的小程序通过简单绘图实现盘子在几个塔之间的转换:namespace
- Android数据共享 sharedPreferences 的使用方法Android 中通过 sharedPreferences 来持久化存
- 一. 封装封装是面向对象的三大特性之一;面向对象程序三大特性:封装、继承、多态 。封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和
- @ConditionalOnProperty作用及用法在spring boot中有时候需要控制配置类是否生效,可以使用@Conditiona
- 一、举个栗子public class BeanServiceImpl implements BeanService {}@Configura
- 异常与错误:异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通
- 前言LayoutInflater在开发中使用频率很高,但是一直没有太知道LayoutInflater.from(context).infla
- 本来是想写一篇《委托与lambda表达式的前世今生》,但仅委托部分已经写了很多内容,于是就此分开关于Lambda表达是的内容后续再写吧。不知
- 我们经常看到使用了ViewPager的App,在每页上面都会有一个滑块来标志当前处于哪一页。在PagerView包里有android.sup