最近一直对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文件相关推荐

  1. 将ocx和DLL文件打包成cab文件,inf的编写

    From: http://icrwen.iteye.com/blog/1118766 http://blog.csdn.net/yimiyangguang1314/article/details/65 ...

  2. java文件打包jar文件_如何把JAVA文件打包成jar文件

    本文讲解了把java文件打包成jar文件的方法,经测试可行.由于作者没时间用批处理文件进行操作的方法没有列出来. (1)把一个java文件打包到当前目录   javac –d . *.java (2) ...

  3. ubuntu 16.04 文件打包成deb文件的方法

    ubuntu 16.04 文件打包成deb文件的方法 可使用的方法一dpkg-deb 一.创建打包空间 二.创建打包相关文件 三.制作deb包 可使用的方法一dpkg-deb 初步了解的第一种方法:创 ...

  4. 将Python文件打包成exe文件(超详细)

    首先,我们为什么要把Python文件打包成exe文件? 因为,Python文件需要Python IDE打开 而exe,就是一个程序,双击就开了! 岂不是妙哉? 基础准备 首先,打开终端,我们要下载打包 ...

  5. python - .py文件打包成.exe文件, 发送给别人

    python文件打包成.exe文件有两种方式 参考: pyinstaller打包 Nuitka打包 环境 环境 描述 OS Windows10 64位 python 3.7 pycharm 2019 ...

  6. Pycharm下将py文件打包成exe文件

    1. 在PyCharm下安装PyInstaller 1. 首先,打开自己要发布的工程   2. 点击底部的[Terminal]打开终端,中输入命令pip install pyinstaller后回车, ...

  7. java 把文件打包成zip_java 文件流的处理 文件打包成zip

    1.下载文件到本地 public void download(HttpServletResponse response){ String filePath ="";//文件路径 S ...

  8. java文件打包成jar文件_将java文件打包成jar包步骤

    将mypackage包中的FrameDemo.java文件打包成可执行成jar包 步骤1:先将程序中所有类打包成一个包 编译mypackage包FrameDemo.java文件,将类文件存入D盘Jar ...

  9. pyinstaller将py文件打包成EXE文件(保姆级教程)

    一.PyInstaller 库的安装 1.一般安装步骤: pip install pyinstaller一般的安装方法是在cmd命令提示符环境下输入: window+r 运行cmd 输入以下内容切换到 ...

最新文章

  1. ecmascript_TC39及其对ECMAScript的贡献
  2. git phpstorm 配置
  3. react 引入轮播插件_React.js实现轮播图
  4. CNN 模型框架(转)
  5. 为apache添加SSL支持
  6. 为什么人人都要有产品思维?
  7. python 数学画图工具_[python][数据分析] matplotlib 和 pyecharts的绘图工具
  8. ​​公众平台测试账号 开通 配置
  9. 第一个android应用程序,深入学习Android 第一个应用程序
  10. 从阿尔法元的诞生看终极算法的可能性
  11. DWM1000的UWB测距改官网例程的调试
  12. 计算机中计算排名用什么公式,最全面的Excel函数排名公式汇总
  13. matlab 以10为底的对数
  14. CC2530+74HC164矩阵键盘的设计
  15. flask 数据库迁移migration
  16. 关于“击败”团队目标的思考
  17. 十款浏览器插件,让你拥有更好的浏览器体验
  18. 考虑海拔的IDW的插值
  19. NNI学习(一)介绍与安装
  20. 头条、油条商标有多像?Python检测发现相似度高达98.4%!

热门文章

  1. 一个字节8位,无符号类型,最大值为什么是2的8次方-1,范围0-255
  2. CSDN博客字体样式、字体大小、字体颜色、首行缩进调节
  3. 突发!意外!华芯通公司将于4月30日关闭
  4. 《都挺好》苏明哲为什么会失业,美国程序员不好找工作吗?
  5. android电量优化方法,Android性能优化——电池使用优化
  6. 计算机毕业设计Java“小蜜蜂”校园代取快递系统(源码+系统+mysql数据库+lw文档)
  7. RuntimeError: stack expects each tensor to be equal size, but got xxx at entry 0 at entry 1
  8. JS 转换数字/日期大全
  9. 华为推送 坑点 自定义intent
  10. 企业微信怎么统计客户数量