如何利用eclipse把 class文件打包成java文件
最近一直对eclipse的运行机制和打包方法很是困惑,上网找了一些资料,可大多都是零零散散,缺少系统性,我想在这里总结一下和大家分享,也希望大家读完后发现有什么不对的地方留言与我联系,我一定及时改正!
eclipse工程目录详解
我使用eclipse在本地新建一个project如下:
下面分别对该目录中的文件夹进行解释
- src:源程序文件,主要存放我们编写的java源程序,也就是.java文件
- JRE System Library:主要存在java的标准库,比如我们常用的java.lang包或者java.util包都在这个目录的rt.jar下
- Referenced Libraries:主要存放我们引用的外部jar包,比如我们操纵oracle必须使用的ojdbc14.jar。但必须build之后才能存放到这里,这个我们后面再讲。
- .settings:该文件夹下主要存放eclipse的配置文件,.classpath存放eclipse的类搜索路径;.project主要描述工程的基本信息。
- 这里我想再说一下classpath文件:.classpath 的位置定义了你这个项目在编译时所使用的$CLASSPATH。classpath 的配置是有先后顺序的,JVM 搜索classpath 的策略是从前到后搜索,如果在搜索过程中,已经找到需要加载的类,那么就不再向后搜索。所以,如果在classpath 中存在重复的类,那么JVM 只加载classpath 配置中,位置靠前的类。后面的类就不会被加载了。
build path详解
假如我现在想对Oracle进行操作,那么我必须要引入ojdbc14.jar,对于这种外部引入的包,我们一般采用如下方法处理:
1. 在当前工程上右击,建立lib文件夹。
2. 将所需的外部jar包(或者class,甚至可以直接是Java,eclipse在引用时可以直接编译)拷贝到lib文件夹下。
3. 在引入的包上右击→Build Path→Add to Build Path,这就将我们的jar包build到我们的项目中了,这时打开.classpath文件可以看到如图classpath新添加了我们的ojdbc14.jar的路径,这也是我们build的目的
ps1:关于这一点我要在申明一下,在论坛上见到一个朋友问自己做了一个项目,将项目所需引用的jar包放到一个文件夹下,然后在环境变量中配置了这个路径,但是eclipse却识别不了。
其实我们在用eclipse开发项目时,对每个项目都需要配置classpath,具体怎么配上面已经解释过了。我认为项目是独立于电脑环境变量的classpath的,每一个项目都需要它特定的classpath,所以在eclipse开发的时候每一个项目都会有一个.classpath文件
ps2:为什么每个项目需要自己的classpath?
我认为eclipse这是为了让你更好的生成项目,试想:如果你不build你当前引用jar,而只是将其放到电脑配置的classpath中,这样如果能够运行。但一旦你移植到别的电脑上,可能你的项目就不能用了,因为你没有build,而其他电脑的classpath并不一定和你开发时一样,classpath中也没有存储你的引用路径,所以虽然你的引用包都拷过去了,但是jvm找不到它
我们做项目的目的是为了让用户使用,所以很多时候生成的jar包是可执行jar包。但是你把引用build进去之后就可以直接打包发给用户让用户去用了吗?其实并不见得,如果你是最后直接打成一个可执行的jar包。那么你还要有一个MANIFEST.MF文件,这个文件是干什么的呢?又该如何打包呢?
eclipse打包及其注意事项
用eclipse打包很简单,但之前我们需要手动建立MANIFEST.MF文件。
关于这个文件,我觉得最好的解释是:这个文件决定jar包时可执行jar包还是不可执行jar包的关键,MAINFEST.MF中用两个重要的配置 Class-Path和Main-Class,Main-Class是你的可执行jar包的程序入口,一般是你的主函数所在的类的相对路径,如果这一项为空,或者是该类中没有main函数,则该jar不可执行;Class-Path中保存你的引用包的路径,如我这里应该写lib/ojdbc14.jar。可能有人会问,不是已经在.classpath中build了吗?但那是eclipse的执行配置,比如当你在win中运行此jar时,系统环境并不读取.classpath而是读取MAINFEST.MF
既然有了这个MAINFEST.MF,我们刷新工程目录就可以看到
下面介绍打包的流程:
在需要打包的工程右击→Export:
选择JAR file,这里选择你的jar包输出路径
然后next→next。这里要注意,要选用自己的MANIFEST.MF文件,不要让eclipse自动生成,自动生成往往不能配置我们想要的信息。
然后finish即可输出jar包。
如何利用eclipse把 class文件打包成java文件相关推荐
- 将ocx和DLL文件打包成cab文件,inf的编写
From: http://icrwen.iteye.com/blog/1118766 http://blog.csdn.net/yimiyangguang1314/article/details/65 ...
- java文件打包jar文件_如何把JAVA文件打包成jar文件
本文讲解了把java文件打包成jar文件的方法,经测试可行.由于作者没时间用批处理文件进行操作的方法没有列出来. (1)把一个java文件打包到当前目录 javac –d . *.java (2) ...
- ubuntu 16.04 文件打包成deb文件的方法
ubuntu 16.04 文件打包成deb文件的方法 可使用的方法一dpkg-deb 一.创建打包空间 二.创建打包相关文件 三.制作deb包 可使用的方法一dpkg-deb 初步了解的第一种方法:创 ...
- 将Python文件打包成exe文件(超详细)
首先,我们为什么要把Python文件打包成exe文件? 因为,Python文件需要Python IDE打开 而exe,就是一个程序,双击就开了! 岂不是妙哉? 基础准备 首先,打开终端,我们要下载打包 ...
- python - .py文件打包成.exe文件, 发送给别人
python文件打包成.exe文件有两种方式 参考: pyinstaller打包 Nuitka打包 环境 环境 描述 OS Windows10 64位 python 3.7 pycharm 2019 ...
- Pycharm下将py文件打包成exe文件
1. 在PyCharm下安装PyInstaller 1. 首先,打开自己要发布的工程 2. 点击底部的[Terminal]打开终端,中输入命令pip install pyinstaller后回车, ...
- java 把文件打包成zip_java 文件流的处理 文件打包成zip
1.下载文件到本地 public void download(HttpServletResponse response){ String filePath ="";//文件路径 S ...
- java文件打包成jar文件_将java文件打包成jar包步骤
将mypackage包中的FrameDemo.java文件打包成可执行成jar包 步骤1:先将程序中所有类打包成一个包 编译mypackage包FrameDemo.java文件,将类文件存入D盘Jar ...
- pyinstaller将py文件打包成EXE文件(保姆级教程)
一.PyInstaller 库的安装 1.一般安装步骤: pip install pyinstaller一般的安装方法是在cmd命令提示符环境下输入: window+r 运行cmd 输入以下内容切换到 ...
最新文章
- ecmascript_TC39及其对ECMAScript的贡献
- git phpstorm 配置
- react 引入轮播插件_React.js实现轮播图
- CNN 模型框架(转)
- 为apache添加SSL支持
- 为什么人人都要有产品思维?
- python 数学画图工具_[python][数据分析] matplotlib 和 pyecharts的绘图工具
- ​​公众平台测试账号 开通 配置
- 第一个android应用程序,深入学习Android 第一个应用程序
- 从阿尔法元的诞生看终极算法的可能性
- DWM1000的UWB测距改官网例程的调试
- 计算机中计算排名用什么公式,最全面的Excel函数排名公式汇总
- matlab 以10为底的对数
- CC2530+74HC164矩阵键盘的设计
- flask 数据库迁移migration
- 关于“击败”团队目标的思考
- 十款浏览器插件,让你拥有更好的浏览器体验
- 考虑海拔的IDW的插值
- NNI学习(一)介绍与安装
- 头条、油条商标有多像?Python检测发现相似度高达98.4%!
热门文章
- 一个字节8位,无符号类型,最大值为什么是2的8次方-1,范围0-255
- CSDN博客字体样式、字体大小、字体颜色、首行缩进调节
- 突发!意外!华芯通公司将于4月30日关闭
- 《都挺好》苏明哲为什么会失业,美国程序员不好找工作吗?
- android电量优化方法,Android性能优化——电池使用优化
- 计算机毕业设计Java“小蜜蜂”校园代取快递系统(源码+系统+mysql数据库+lw文档)
- RuntimeError: stack expects each tensor to be equal size, but got xxx at entry 0 at entry 1
- JS 转换数字/日期大全
- 华为推送 坑点 自定义intent
- 企业微信怎么统计客户数量