[TOC]
背景:一个工程要打成jar包,一般两种情况,要么是打成一个工具jar让别人引用,要么打成一个可执行jar包。那么不使用maven的情况下通过IDE如eclipse来打包怎么做这两件事呢.也同时介绍通过命令行打包方式

eclipse打工具jar

1.项目右键–>export -->搜索java

2.选择JAR file

3.打包


这里如果直接finish就没有设置Main Class,也就是执行主类,但这样打包一般都只是打成工具包,所以一般都不需要设置MainClass

eclipse打包可执行jar

1.项目右键–>export -->搜索java(参考上图)

2.选择Runnable JAR file

3.打包如下

java命令行打包

先打开命令提示符cmd,输入javac help,然后回车,看到:   
  用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 …   
  
  选项:
  
  -c 创建新的存档
  -t 列出存档内容的列表
  -x 展开存档中的命名的(或所有的〕文件
  -u 更新已存在的存档
  -v 生成详细输出到标准输出上
  -f 指定存档文件名
  -m 包含来自标明文件的标明信息
  -0 只存储方式;未用zip压缩格式
  -M 不产生所有项的清单(manifest〕文件
  -i 为指定的jar文件产生索引信息
  -C 改变到指定的目录,并且包含下列文件:  
  如果一个文件名是一个目录,它将被递归处理。   
  清单(manifest〕文件名和存档文件名都需要被指定,按’m’ 和 'f’标志指定的相同顺序。  
 
可参考:https://www.cnblogs.com/mq0036/p/3885399.html

java -jar运行jar包找不到依赖包的解决方法

这个就是看jar包中生成的META-INF/MANIFEST.MF文件中的配置了,这个文件是打jar包时生成的,但也可以手动修改替换,必须要有。
对于运行jar然后找不到依赖的jar包解决方案:

方案1:最不推荐

把依赖的jar全部放到JRE的扩展类文件夹中(%JAVA_HOME%/jre/lib/ext)

方案2:手动添加Class-Path正确方法

Manifest-Version: 1.0
Class-Path: . testPackage2_lib/fastjson-1.2.38.jar
Main-Class: com.mym.practice.testpackage.MainClass
 
  • 1
  • 2
  • 3

需要注意的是,

  • (1)有多个jar引用要换行写
  • (2)注意Class-Path的冒号与右边字符有空格,并且有个点“.”不能漏了,看很多文章都没有说到这个点,导致即使加了这个也没用。这个点的由来可以参考配置jdk环境变量配置classpath时是一样的

方案3:出现这样的问题基本就是打包方式问题,检查自己的打包方式。

方案4:换成maven工程,通过配置插件打包很便捷

java打jar包与找不到依赖包详解的更多相关文章

  1. Java构造和解析Json数据的两种方法详解二

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...

  2. Java构造和解析Json数据的两种方法详解二——org.json

    转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html 在www.json.org上公布了很多JAVA下的jso ...

  3. Java构造和解析Json数据的两种方法详解一——json-lib

    转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多JAVA下的jso ...

  4. 《手把手教你》系列基础篇(八十六)-java+ selenium自动化测试-框架设计基础-Log4j实现日志输出(详解教程)

    1.简介 自动化测试中如何输出日志文件.任何软件,都会涉及到日志输出.所以,在测试人员报bug,特别是崩溃的bug,一般都要提供软件产品的日志文件.开发通过看日志文件,知道这个崩溃产生的原因,至少知道 ...

  5. 提高Java代码质量的Eclipse插件之Checkstyle的使用详解

    提高Java代码质量的Eclipse插件之Checkstyle的使用详解 CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具.它能够自动化代 ...

  6. 《手把手教你》系列技巧篇(七十一)-java+ selenium自动化测试-自定义类解决元素同步问题(详解教程)

    1.简介 前面宏哥介绍了几种关于时间等待的方法,也提到了,在实际自动化测试脚本开发过程,百分之90的报错是和元素因为时间不同步而发生报错.本文介绍如何新建一个自定义的类库来解决这个元素同步问题.这样, ...

  7. 《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)

    1.简介 上一篇介绍了POM的基础理论知识和非POM方式写脚本,这篇介绍利用页面工厂类(page factory)去实现POM,通过查看PageFactory类,我们可以知道它是一个初始化一个页面实例 ...

  8. 《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)

    1.简介 上一篇宏哥用PageFactory实现了POM,宏哥再介绍一下如果不用PageFactory如何实现POM. 2.项目实战 在这里宏哥以百度首页登录的例子,如果用POM实现,在测试脚本中实际 ...

  9. 《手把手教你》系列基础篇(九十六)-java+ selenium自动化测试-框架之设计篇-跨浏览器(详解教程)

    1.简介 从这一篇开始介绍和分享Java+Selenium+POM的简单自动化测试框架设计.第一个设计点,就是支持跨浏览器测试. 宏哥自己认为的支持跨浏览器测试就是:同一个测试用例,支持用不同浏览器去 ...

随机推荐

  1. 后台对象转JSON字符串传到前台,前台JSON字符串转对象绑定标签赋值

    /// <summary> /// 创建换货单-自动获取对应的数据(后端) /// </summary> [HttpGet] public ActionResult GetPr ...

  2. MYSQL安装与卸载(一)

    系统:win10(其他版本系统不在本次内容) MYSQL下载地址:https://dev.mysql.com/downloads/mysql/ MySQL安装主流分为两种:msi,zip Zip:压缩 ...

  3. ORA-28547: connection to server failed, probable Oracle Net admin error

    现象 C:\Users\Administrator>sqlplus scott/tiger@192.168.1.11:1521/orcl SQL*Plus: Release 11.2.0.4.0 ...

  4. JAVA 查找某个目录是否存在,如果存在,打印出来

    题目:现有如下目录结构,查找结构中是否存在Directory11,如果存在,打印出来 |---test |---|---Directory1 |---|---|---Directory11 |---| ...

  5. django操作mysql

    连接mysql 1.安装pymysql 操作指令 : pymsql: pip install pymysql 2.导入库 在项目目录下的__init__.py文件中导入pymysql模块 加入以下两行 ...

  6. Linux命令——ar

    参考:UNIX ar Examples: How To Create, View, Extract, Modify C Archive Files (*.a) 参考:What's the differ ...

  7. Django :中间 件与csrf

    一.中间件 什么是中间件 中间件有什么用 自定义中间件 中间件应用场景 二.csrf csrf token跨站请求伪造 一.中间件 1.什么是中间件 中间件顾名思义,是介于request与respon ...

  8. 创建第一kubernetes应用以及基本操作(六)

    1.创建一个测试用的deployment kubectl run net-test --image=alpine --replicas= sleep 2.查看获取IP情况 [root@linux ~] ...

  9. certbot更新错误

    自动更新老是提示这个错误. root@vultr:~/certbot# ./certbot-auto Upgrading certbot-auto 0.29.1 to 0.34.2... Couldn ...

  10. 17 webpack中babel的配置

    在webpack中,默认只能处理一部分ES6的新语法,一些更高级的ES6语法或者ES7语法, webpack是处理不了的:这时候,就需要借助于第三方的loader,来帮助webpack处理这些高级的语 ...