Eclipse下的java工程目录问题和路径问题理解
1.Eclipse下的java工程都有哪些文件夹?
答:new java project时,会默认创建SRC源代码目录,并默认创建一个bin目录作为输出目录,输出目录是指生成的class文件和配置文件地址。
所以Eclipse创建的java工程,默认就两个文件夹,src和bin。
2.当点击Eclipse运行时候java jdk会默认执行编译,并将编译后的java文件,生成class文件放到项目目录下的bin文件夹里,以.class命名结尾。
注:即使某个类有bug错误,不能编译通过。但只要点击了编译运行,就会在bin文件夹下生成这个类的class文件。
3.最重要的目录是bin目录,而非src目录。bin目录是整个项目的输出目录,输出目录,意味着不论是编译后的class文件还是项目用到的propertier文件,最终都会输出到bin目录下。
项目最后的结果是jar文件,jar文件里面也只有class文件夹,并不会有src文件夹,而是将src下的所有包名转换为文件夹保存在bin目录下,而其他Test根目录下的比如自己创建的config文件夹并不会在jar包的bin目录下存在,但是会将所有的非src文件夹下的其他文件夹所有东西都保存到bin目录下。
4.java编译器(jdk)能进行编译项目和组织项目的一切前提是:classpath。java.exe虚拟机有个cp参数,eclipse生成的java工程,也会有一个classpath参数,最终eclipse会将自己的classpath参数传给java.exe的参数cp,用于java虚拟机运行操控。比如,你在项目Test下创建的文件夹config,是不会被读取到的,因为eclipse默认的classpath只包括src目录,bin目录jdk目录,和依赖的jar包目录。这也就是为什么我们引进jar包时,一定要add to build path,包括创建文件夹时,也要add to source。这一切都是为了添加进claspath路径里面。
5.jvm最红会根据classpath下的路径,将全部输出,输出到bin目录下。包括引进的jar包等等。
6.所以classpath,是虚拟机编译项目的基础,是虚拟机编译组织项目的基础。
7.classpath是虚拟机编译组织项目的基础。而项目根目录是创建文件,引进路径的基础。
8.buildpath就是classpath,buildpath就是classpath。是jvm编译组织生成项目的根本。只有添加进buildpath(classpath),才能被jvm读取到,也就是才能被代码读取到。
8.每个项目都有一个默认的根路径。Eclipse下默认根目录是Test下,直接就是工程目录下。而生成的Jar包,默认根目录是bin下。
9.看一下工程文件夹下的.classpath文件:4部分,src问价,bin文件,jdk路径,jar包路径
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="output" path="bin"/>
</classpath>
10.项目代码里面,又是怎样获取项目或者文件或者类的绝对路径的呢?
答:因为有了classpath的存在,所以我们在读取配置文件或者涉及文件路径操作的时候,在代码里只需要写相对 相对路径就可以,相对路径就是参照classpath的路径,也就是参照最终的bin文件夹路径。如果想获取绝对路径,可以通过类的加载器,随时获取所在类的绝对路径,class.getclassload().getResource("");即可
11.顺便说一下Eclipse是怎么调用本地jdk的及本地jdk的虚拟机的,是依靠你本地配置的JAVA_HOME环境变量,Eclipse会自动读取这个环境变量地址。进而编译运行项目的。进而也就是把Eclipse自己的classpath传递给jvm的cp参数的


Eclipse下的java工程目录问题和路径问题理解的更多相关文章
- Eclipse下的java工程目录
对新手来讲,一个Java工程内部的多个文件夹经常会让大家困惑.更可恶的是莫名其妙的路径问题,在Eclipse编写Java程序中,出现频率最高的错误很可能就是路径问题. 这些问题原因其实都是一个,就是关 ...
- 转载:Eclipse下的java工程目录
原文链接:https://www.cnblogs.com/milantgh/p/4029003.html 对新手来讲,一个Java工程内部的多个文件夹经常会让大家困惑.更可恶的是莫名其妙的路径问题,在 ...
- (一)eclipse Dynamic web project 工程目录以及文件路径问题
如图,我创建了一个work 的web project,当工程完成之后,部署在服务器上时,整个work工程会被打包成一个war包,如 除了可以在eclipse上运行,工具会帮我们自动部署在服务器上之外, ...
- 4-1eclipse & 4-2在eclipse下开发Java
ecplise是一款继承的开发工具,可以开发我们的java程序. 下载地址: https://www.eclipse.org/downloads/ 视频中ecplise的版本 安装Ecplise: 默 ...
- Intellij IDEA下导出Java工程的可运行JAR包
Intellij IDEA下导出Java工程的可运行JAR包 昨天一直向导出一个Java工程的可运行JAR包,然后查阅网上的资料以及自己一遍一遍的尝试,均以失败告终.可以导出JAR包,但是导出的JAR ...
- Eclipse中把Java工程修改成web工程
Eclipse中把Java工程修改成web工程 点击项目:右击:选择properties--输入project facets,将“Dynamic Web Module”打勾即可:
- Java-Maven(五):Eclipse&Maven下创建java工程&web工程
本章文章主要学习集成了maven插件的eclipse下,创建java project和web project的步骤. 创建java工程 第一步:使用使用maven project来创建java pr ...
- 更改Eclipse下Tomcat的部署目录 ,防止上传的文件是到eclipse的克隆的tomcat上的webapp,而不是tomcat本身的webapp
使用eclipse开发是因为机器不够用myeclipse,eclipse也比myeclipse清爽很多,启动速度也快.这里的搭建开发环境使用: Jdk1.6+Tomcat6+Eclipse JEE, ...
- 更改Eclipse下Tomcat的部署目录
转自:http://kingxss.iteye.com/blog/1741438 前言 今天tomcat启动就报错,后来查原因是因为异常关闭tomcat的原因,需要删除一个sessions.ser的文 ...
随机推荐
- 第二篇:SpringBoot配置详解
SpringBoot 是为了简化 Spring 应用的创建.运行.调试.部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖 ...
- Blade - 腾讯开源的构建系统 c/c++编译环境
,Blade是软件project的利器.有助于模块化,模块化的力度控制自如.对于提高系统的可维护性.复杂性的隔离.代码复用的最大化.都有非常大的优点. 2,Blade提供了单元測试的最佳使用方式. 假 ...
- UVa11183 - Teen Girl Squad(最小树形图-裸)
Problem I Teen Girl Squad Input: Standard Input Output: Standard Output -- 3 spring rolls please. - ...
- 使用fatjar来实现将包括第三方jar包的项目到处成一个jar包供其它程序使用
一.在线安装fat jar 在线安装步骤: eclipse菜单条 help >software updates >Search for new features to install> ...
- Hit 2255 Not Fibonacci
今天下午刚起来眼睛就比較涨,,并且还有点恶心,唉.结果一直不在状态.并且这个题太坑了.. .. 点击此处即可传送 Hit 2255 Maybe ACMers of HIT are always fon ...
- Android编程获取手机型号,本机电话号码,sdk版本号及firmware版本号号(即系统版本号号)
Android开发平台中,可通过TelephonyManager 获取本机号码. TelephonyManager phoneMgr=(TelephonyManager)this.getSystemS ...
- invalidate
转载请注明出处: 前言: 本文是我读<Android内核剖析>第13章----View工作原理总结而成的,在此膜拜下作者 .同时真挚地向渴望了解 A ...
- POJ 1466 最大独立点集
思路:匈牙利 n-ans/2; // by SiriusRen #include <cstdio> #include <cstring> #define N 505 using ...
- 在Ubuntu Server下搭建LAMP环境
1 LAMP的安装 LAMP通常是指Linux+Apache+MySQL+PHP组合形成的一套可以运行PHP程序的体系,并不是一个软件的名称.没有安装MySQL的服务器依然可以在其它条件完备的情况下运 ...
- Axios 网络请求组件封装 (鉴权、刷新、拦截)
一.前言 注意:本教程需要你对axios有一定的了解,不适用于小白(只能借鉴,希望你能自己动手),注释都写的很清楚.此封装并非完整版,已进行部分删减修改操作,但仍然适用于大部分业务场景,如果不适用于你 ...