zoukankan      html  css  js  c++  java
  • 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参数的

  • 相关阅读:
    警告:ORA-00600 2252 错误正在SCN问题下不断爆发(转)
    Linux批量清除木马文件photo.scr
    500 OOPS: vsftpd: refusing to run with writable root inside chroot() Login failed. 421 Service not available, remote server has closed connection
    Linux后门入侵检测工具(转)
    解决Docker无法删除镜像
    通过DataX从Oracle同步数据到MySQL-安装配置过程
    Server2008 R2安装、配置Freesshd(Jenkins持续集成-Windows)
    Mysql死锁解决办法
    Mssql 2017修改master默认排序规则
    可能需要用到的Mac技巧or软件
  • 原文地址:https://www.cnblogs.com/panxuejun/p/6411702.html
Copyright © 2011-2022 走看看