做代销的网站,qq是哪款软件开发的,大站wordpress,苏州那里可以建网站对新手来讲#xff0c;一个Java工程内部的多个文件夹经常会让大家困惑。更可恶的是莫名其妙的路径问题#xff0c;在Eclipse编写Java程序中#xff0c;出现频率最高的错误很可能就是路径问题。这些问题原因其实都是一个#xff0c;就是关于Java工程内的文件结构理解不清一个Java工程内部的多个文件夹经常会让大家困惑。更可恶的是莫名其妙的路径问题在Eclipse编写Java程序中出现频率最高的错误很可能就是路径问题。这些问题原因其实都是一个就是关于Java工程内的文件结构理解不清虽然我也不是老手但有一些经验拿来和大家分享eclipse的基本工程目录叫做workspace每个运行时的eclipse实例只能对应一个workspace也就是说workspace是当前工作的根目录。我们在workspace中可以随意创建各种java相关的工程普通的java应用java web应用web service应用等我们仅拿普通的java application来说明。通常我们创建一个java application工程会创建一个工程目录假设工程名称为TestProject那么在当前的workspace里讲创建一个目录名为TestProject同时我们选择src作为源码文件夹bin作为输出路径这样就构成了一个基本的java application工程。在workspace中存在如下文件夹workspaceTestProject-src-bin这个时候我们创建的代码将写入src目录输出的class文件将存在于bin目录。(对于新手来说区分src目录和bin目录很重要通常情况下src目录只存放源代码而所有工程相关的其他输出文件都会存放在bin目录下最为重 要的是用Eclipse进行打包时根目录就是bin用jar包调用工程的时候默认的路径也要以bin为准到bin的层级数目就是最终的数目因此可 以说bin是最为重要的目录而不是src)这时候我们在src目录下创建一个类就叫做TestClass里面有一个main方法如下Java代码public static voidmain(String[] args){System.out.println(new File(test.txt).exist());}同时在src目录下创建一个空的文件test.txt。什么都不要做保存工程打开资源管理器我们来查看workspace/TestProject/bin目录下面会存在两个文件TestClass.class和test.txt。此时我们设想程序的内容就是检查test.txt文件是否存在按照现在的目录规划我们认为在控制台上将打出“true”ok我们回到eclipse中运行TestClass这个类。控制台输出了false为什么我们得到了并非我们预期的结果呢先别着急我们打开windows的命令行界面(或者linux的shell都ok)将目录切换到workspace/TestProject/bin目录下执行如下命令java TestClass看看出现什么结果true对就是true。为啥同样的程序会有不同的结果呢这个答案很简单就出在java.exe本身的一个参数-cp(classpath)上eclipse默认的classpath包括三个部分1、jdk的bin目录2、工程引用的所有其他jar包路径3、工程根路径(对不是bin路径)那么我们就可以理解来在classpath的根路径中并不存在这个test.txt文件用相对路径描述这个文件实际存在于src/test.txt 和bin/test.txt。也就是说classpath默认的路径是workspace-testproject下而不是workspace- testproject-bin下所以才找不到这个文件。这是经常出现的问题那么这个时候就有疑问了如果我们打包发布工程是不是jar包中会把testproject根目录作为包中的根目录呢幸运的是eclipse考虑好 了这个问题。通过eclipse的导出jar能力bin目录会作为jar的根目录而不是bin的上层的工程目录这样类的包路径就是正确的同时工 程目录下的资源文件、配置文件等也被拷贝到这里也就是相当于把工程目录下的这些文件拷贝到来bin目录后再打包这样文件的相对路径也就符合默认的 classpath了。从上面可以总结出来Eclipse直接运行时是以工程的根目录作为基准目录。而打包成jar运行时则是以bin目录作为基准目录。这两者相差了一级目录如果理解的不好可能会导致错误。希望大家注意