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的文 ...
随机推荐
- 洛谷——P2440 木材加工
https://www.luogu.org/problem/show?pid=2440#sub 题目背景 要保护环境 题目描述 题目描述: 木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木 ...
- HDU 1431
可以先找出回文数,再用素数测试来判是否为素数即可. 打回文数时,因为左右对称,可以只枚举后半部,然后通过逆转得到前半部分. #include <iostream> #include < ...
- coalesce函数-返回参数中第一个非null值
coalesce函数-返回参数中第一个非null值 学习了:http://www.cnblogs.com/zc_0101/archive/2009/08/11/1543650.html 这个要复杂一些 ...
- Codeforces 570D TREE REQUESTS dfs序+树状数组
链接 题解链接:点击打开链接 题意: 给定n个点的树.m个询问 以下n-1个数给出每一个点的父节点,1是root 每一个点有一个字母 以下n个小写字母给出每一个点的字母. 以下m行给出询问: 询问形如 ...
- NFS安装和配置
---------------------------------------------------------------------------------------------------- ...
- Linux 下配置,安装Hadoop
1.从官网上下载hadoop-2.4.1.tar.gz,我的版本为hadoop-2.4.1,可在http://pan.baidu.com/s/1cLAKCQ 下载. 2.解压hadoop-2.4.1. ...
- 0x18 总结与练习
这一章不太满意啊.. 还是有点痛苦,但就是做的挺慢啊... 1.就是例题 2.括号画家 感觉这种提高组类型的细节题都没什么信心啊,fail了几次才A #include<cstdio> #i ...
- 0x11 栈
这个不难吧,算是常识了..毕竟也是刷过USACO的人 对顶栈这东西前几天才遇到过,好像和在线求中位数那东西放一起了吧 单调栈倒是没什么...贴个代码算了.一开始有点蠢的每个位置算,后来发现出栈再算就行 ...
- Python笔记(四)
# -*- coding:utf-8 -*- # 控制语句 # if...else... print "********************1********************** ...
- Spark RDD概念学习系列之transformation操作
不多说,直接上干货! transformation操作 惰性求值 (1)RDD 的转化操作都是惰性求值的.这意味着在被调用行动操作之前Spark不会开始计算. (2)读取数据到RDD的操作也是惰性的. ...