在java的web项目中,引用第三方包的时候非常简单。因为在web项目上中,默认有一个web-inf文件夹。web-inf文件夹下有一个lib文件夹,如果有用到第三方包,直接丢进去就行了。但是对于普通的java项目,在编译器中设置第三方包的引用其实也非常简单,但是在把项目导出打包成一个可运行的jar文件的时候,却有点麻烦,因为在这个可运行的jar文件中我们经常会丢失第三包。解决这个问题一般有两种途径:

一、使用eclipse的export的时候,选择Runnable JAR file 这种方式最简单直接
二、使用eclipse的export,直接导出为jar文件,在jar文件所在的文件夹中新建文件夹lib,然后把所有的第三方包丢进去,最后手动修改jar文件中的MANIFEST.MF文件,增加Class-Path的配置,例如:
Class-Path: lib/commons-dbcp.jar
其中commons-dbcp.jar为lib文件夹中的第三方包,多个第三方包之间用两个空格分来,具体的语法格式网上可以搜索一下,非常全面

  在对比一下这两种方式之前,我们先了解一个java虚拟机加载程序的一个知识点:
jar文件我们使用解压工具打开实际上可以发现,里面非常简单,就是一些文件夹目录和一堆class文件,文件夹目录实际上代表的就是包名,所以虚拟机在加载的时候就是把jar文件中的所有class文件都进行加载,记住是所有。

所以我们解压第一种方式生成的jar文件,发现我们引用的第三方包这个时候全部都是带包名路径的class文件
而我们的第二种方式通过Class-Path的设置,所以虚拟机会从目录中直接加载第三方jar包,然后再获取其中的class,这样封装结构更加简单,更符合web项目的习惯

综上,第一种方式更加简单,但是第二种方式更加灵活并且符合我们的常规习惯。

java普通项目打包成可执行jar文件时如何添加第三包的更多相关文章

  1. Maven项目打包成可执行Jar文件

    在使用Maven完成项目以后,如果需要打包成可执行的Jar文件,我们通过eclipse的导出很麻烦,还得指定入口文件的位置,还得说明依赖的jar包,既然都使用Maven了,很重要的一个目的就是让这些繁 ...

  2. 将Maven项目打包成可执行jar文件(引用第三方jar)

    方法一. mvn assembly 或 mvn package (一个jar包) 把依赖包和自己项目的文件打包如同一个jar包(这种方式对spring的项目不支持) <build>     ...

  3. 将Maven项目打包成可执行 jar文件(引用第三方jar)

    使用maven assembly插件完成打包 修改pom: <build> <pluginManagement> <plugins> <!--设置jdk版本, ...

  4. (转载)Eclipse将引用了第三方jar包的Java项目打包成可执行jar的两种方法

    转载自:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 "MA ...

  5. maven 把spring项目打包成可执行的文件

    转载自http://www.mamicod.e.com/info-detail-635726.html 最近需要解决Maven项目导入可执行的jar包的问题,如果项目不包含Spring,那么使用mvn ...

  6. 如何将maven项目打包成可执行的jar

    如何将maven项目打包成可执行的jar 分类: maven2010-12-17 10:18 10411人阅读 评论(2) 收藏 举报 jarmavenassemblyjava 方法一:将项目及所依赖 ...

  7. 通过idea 打包 spring maven项目打包为可执行jar包

    用assembly打包一直报错: shangyanshuodeMacBook-Pro:target shangyanshuo$ java -jar jobscrawler-1.0-SNAPSHOT-j ...

  8. 将Java应用程序打包成可执行的Jar包

    可以将多个class文件打包为jar包,在指定程序入口点情况下,可以用 java –jar jar包名称 的方式调用jar包内主类的main函数. 程序源代码如下: //Math.java publi ...

  9. maven项目打包成可执行的jar

    编写功能类: package com.hpay.FileToZkUtil; import java.io.File; import java.io.FileInputStream; import ja ...

随机推荐

  1. 关于格林尼治时间(GMT)和DateTime相互转换的分享

    普及一下什么是格林尼治时间? 世界时UT即格林尼治 平太阳时间,是指格林尼治所在地的标准时间,也是表示地球自转速率的一种形式.以地球自转为基础的时间计量系统.地球自转的角度可用地方子午线相对于地球上的 ...

  2. asp.net core 使用 NLog日志

    NLog是一个配置灵活的日志记录类库,拥有输出日志到文件.存储入库.发送到udp地址的高级功能 1 添加 nlog nuget包 Nlog和NLog.Web.AspNetCore 安装完成后   2 ...

  3. FreeSql (二十六)贪婪加载 Include、IncludeMany、Dto、ToList

    贪婪加载顾名思议就是把所有要加载的东西一次性读取. 本节内容为了配合[延时加载]而诞生,贪婪加载和他本该在一起介绍,开发项目的过程中应该双管齐下,才能写出高质量的程序. Dto 映射查询 Select ...

  4. IO、IO序列化

    文件:文件可认为是相关记录或放在一起的数据的集合.文件一般保存在硬盘.U盘.光盘.云盘的媒介中. JAVA API:java.io.File类可操作文件 File对象的构建 File file=new ...

  5. Python:给定一个不超过5位的正整数,判断有几位

    方法一:作比较 [root@python markPy]# cat five.py #!/usr/bin/python3 a=int(input(">>>>" ...

  6. C#中Path类的常用方法

    场景 打开VS,输入Path,我们可以看到其定义. 都是静态方法,所以我们可以使用类名直接调用. 实现 新建命令行程序,编码如下: string str = @"C:\Users\Admin ...

  7. a149: 乘乘樂

    题目: 你拿到一个整数,却忍不住想把每个位数都乘在一起.例如看到356就会想要知道3 * 5 * 6的值为何.快写个程序帮帮为了乘数字而快发疯的自己吧! 思路:把这个数每一位%10,并且再将它每次/1 ...

  8. sparkSql使用hive数据源

    1.pom文件 <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-lib ...

  9. 编写自动匹配的下拉框(已解决IE8兼容)

    如何制作一个带匹配功能的下拉框? 之前看见layui有相关组件,但是发现,如果输入的内容在下拉框中没有相应的匹配,就会清空当前值,搞得我很不满意.有些代码是从网上扒下来的,但是找不到原地址了,凑合看吧 ...

  10. PTA A1009&A1010

    第五天 A1009 Product of Polynomials (25 分) 题目内容 This time, you are supposed to find A×B where A and B a ...