java普通项目打包成可执行jar文件时如何添加第三包
在java的web项目中,引用第三方包的时候非常简单。因为在web项目上中,默认有一个web-inf文件夹。web-inf文件夹下有一个lib文件夹,如果有用到第三方包,直接丢进去就行了。但是对于普通的java项目,在编译器中设置第三方包的引用其实也非常简单,但是在把项目导出打包成一个可运行的jar文件的时候,却有点麻烦,因为在这个可运行的jar文件中我们经常会丢失第三包。解决这个问题一般有两种途径:
Class-Path: lib/commons-dbcp.jar
其中commons-dbcp.jar为lib文件夹中的第三方包,多个第三方包之间用两个空格分来,具体的语法格式网上可以搜索一下,非常全面
在对比一下这两种方式之前,我们先了解一个java虚拟机加载程序的一个知识点:
jar文件我们使用解压工具打开实际上可以发现,里面非常简单,就是一些文件夹目录和一堆class文件,文件夹目录实际上代表的就是包名,所以虚拟机在加载的时候就是把jar文件中的所有class文件都进行加载,记住是所有。
所以我们解压第一种方式生成的jar文件,发现我们引用的第三方包这个时候全部都是带包名路径的class文件
而我们的第二种方式通过Class-Path的设置,所以虚拟机会从目录中直接加载第三方jar包,然后再获取其中的class,这样封装结构更加简单,更符合web项目的习惯
综上,第一种方式更加简单,但是第二种方式更加灵活并且符合我们的常规习惯。
java普通项目打包成可执行jar文件时如何添加第三包的更多相关文章
- Maven项目打包成可执行Jar文件
在使用Maven完成项目以后,如果需要打包成可执行的Jar文件,我们通过eclipse的导出很麻烦,还得指定入口文件的位置,还得说明依赖的jar包,既然都使用Maven了,很重要的一个目的就是让这些繁 ...
- 将Maven项目打包成可执行jar文件(引用第三方jar)
方法一. mvn assembly 或 mvn package (一个jar包) 把依赖包和自己项目的文件打包如同一个jar包(这种方式对spring的项目不支持) <build> ...
- 将Maven项目打包成可执行 jar文件(引用第三方jar)
使用maven assembly插件完成打包 修改pom: <build> <pluginManagement> <plugins> <!--设置jdk版本, ...
- (转载)Eclipse将引用了第三方jar包的Java项目打包成可执行jar的两种方法
转载自:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 "MA ...
- maven 把spring项目打包成可执行的文件
转载自http://www.mamicod.e.com/info-detail-635726.html 最近需要解决Maven项目导入可执行的jar包的问题,如果项目不包含Spring,那么使用mvn ...
- 如何将maven项目打包成可执行的jar
如何将maven项目打包成可执行的jar 分类: maven2010-12-17 10:18 10411人阅读 评论(2) 收藏 举报 jarmavenassemblyjava 方法一:将项目及所依赖 ...
- 通过idea 打包 spring maven项目打包为可执行jar包
用assembly打包一直报错: shangyanshuodeMacBook-Pro:target shangyanshuo$ java -jar jobscrawler-1.0-SNAPSHOT-j ...
- 将Java应用程序打包成可执行的Jar包
可以将多个class文件打包为jar包,在指定程序入口点情况下,可以用 java –jar jar包名称 的方式调用jar包内主类的main函数. 程序源代码如下: //Math.java publi ...
- maven项目打包成可执行的jar
编写功能类: package com.hpay.FileToZkUtil; import java.io.File; import java.io.FileInputStream; import ja ...
随机推荐
- 实验吧CTF练习题---WEB---FALSE解析
实验吧web之FALSE 地址:http://www.shiyanbar.com/ctf/1787 flag值:CTF{t3st_th3_Sha1} 解题步骤: 1.点开题目链接,观察题意 2.题 ...
- "".equals(xxx)和xxx.equals("")的区别
今天做项目发现如下这个问题 看见别人用 if ("abc".equals(str)),然后自作聪明地认为 if (str.equals("abc"))是等效的, ...
- SQLServer的网络协议
一.总结 1.SQL Server访问协议包括Shared Memory.Named Pipes.TCP/IP.VIA四种,多数应用系统都是通过TCP/IP协议访问数据库.安装数据库后需要启用TCP/ ...
- ACM代码模板
功能介绍 写了I/O函数,支持以下几种方式 read(num); //读入一个数num(任意整数类型,下同) read(num1,num2,num3,num4); //读入任意多个数 read(arr ...
- CSS——样式表的引入
1.内部样式表 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <t ...
- C++程序设计学习
第一章 预备知识 1.C++历史起源 由于C语言具有许多优点,比如语言简洁灵活:运算符和数据类型丰富:具有结构化控制语句:程序执行效率高:同时具有高级语言和汇编语言的优点等.与其他高级语言相比,C语言 ...
- [Pandas] 05 - Parallel processing
相关资源 [Python] 09 - Multi-processing [Pandas] 01 - A guy based on NumPy [AI] 深度数学 - Bayes 这章非常有意思,但一定 ...
- angularjs1学习笔记--持续更新
angularJS使用的MVC为何不属于二十三种设计模式之一? MVC被GoF (Gang of Four,四人组, <Design Patterns: Elements of Reusable ...
- 商用hadoop集群的配置命令分布
角色 安装 hdfs配置 yarn配置 hdfs 格式化 启动yarn服务 启动hdfs服务 master yum install hadoop-hdfs-namenode yum install h ...
- JVM 调优 - jhat
Java命令学习系列(五)——jhat 2016-01-21 分类:Java 阅读(8708) 评论(3) 阿里大牛珍藏架构资料,点击链接免费获取 jhat(Java Heap Analysis To ...