一、
classes目录就是所谓的
classpath
ClassLoader 提供了两个方法用于从装载的类路径中取得资源:
public URL getResource (String name);
public InputStream getResourceAsStream (String name);
这里name是资源的类路径,它是相对与“/”根路径下的位置。getResource得到的是一个URL对象来定位资源,而getResourceAsStream取得该资源输入流的引用保证程序可以从正确的位置抽取数据。
但是真正使用的不是ClassLoader的这两个方法,而是Class的 getResource和getResourceAsStream方法,因为Class对象可以从你的类得到(如YourClass.class或 YourClass.getClass()),而ClassLoader则需要再调用一次YourClass.getClassLoader()方法,不过根据JDK文档的说法,Class对象的这两个方法其实是“委托”(delegate)给装载它的ClassLoader来做的,所以只需要使用 Class对象的这两个方法就可以了。
因此,直接调用 this.getClass().getResourceAsStream(String name) ;获取流,静态化方法中则使用ClassLoader.getSystemResourceAsStream (String name) ; 。
下面是一些得到classpath和当前类的绝对路径的一些方法。你可能需要使用其中的一些方法来得到你需要的资源的绝对路径。
1.this.getClass().getResource("")
得到的是当前类class文件的URI目录。不包括自己!
如:file:/D:/workspace/TMC/bin/com/test/
2.this.getClass().getResource("/")
得到的是当前的classpath的绝对URI路径 。
如:file:/D:/workspace/TMC/classes/
3.this.getClass() .getClassLoader().getResource("")
得到的也是当前ClassPath的绝对URI路径 。
如:file:/D:/workspace/TMC/classes/
4.ClassLoader.getSystemResource("")
得到的也是当前ClassPath的绝对URI路径 。
如:file:/D:/workspace/TMC/classes/
5.Thread.currentThread().getContextClassLoader ().getResource("")
得到的也是当前ClassPath的绝对URI路径 。
如:file:/D:/workspace/TMC/classes/
---------------------------------------------------------------------------------
二、开发项目目录与部署到tomcat目录对应关系,及注意事项。
总结:
(1). 开发项目WebRoot目录下的文件(一般是前端文件和部分配置文件),部署后,全部都在项目的根目录下。
(2). 开发项目类路径,首先按功能分类,创建对应的文件夹(可以创建很多个,如:文件夹名:src/pay, src/util,
src/webservice等), 再在文件夹里创建包路径。说明:文件夹与部署后的项目没任何关系,只是为了方便功能开发与目录管理。
真正部署到tomcat里的是包路径(如:cn.com.hotel.dao, cn.com.ticket.impl)。这些包路径统一放在\WEB-INF\classes下面。
(3). 包路径进行了重合,若某级的包名称不同,则分支出对应的文件夹。
(4). 若在src目录下,没有包路径,相应的文件,部署后直接放在\WEB-INF\classes下面。
(5). jar包,虽然放在lib文件夹里,但实际上那些类可以直接引用的。比如com.test.ABC,就可以直接这么写,仿佛也在classes下面一样。所以jar包无论放在哪个目录下都一样的。
分享到:
相关推荐
主要介绍了Java 中获取类路径 classpath 的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
java实现 获取指定路径下 指定格式 的所有文件
java project和java web project项目中如何获得相对路径、绝对路径问题详解
下面小编就为大家带来一篇Java中获取类路径classpath的简单方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
本篇文章是对获取JAVA路径,包括CLASSPATH外的路径的方法进行了详细的分析介绍,需要的朋友参考下
文中指出尽量不要使用相对于System.getProperty(\\\"user....使用上面 ClassLoaderUtil类的public static URL getExtendResource(String relativePath)方法已经能够使用相对于classpath的相对路径定位所有位置的资源。
主要介绍了浅谈web项目读取classpath路径下面的文件,具有一定借鉴价值,需要的朋友可以参考下
获取当前执行的classpath的所有jar包的路径 * 3.通过java的ToolProvider创建JavaCompile,用来执行class源文件 * 4.创建DiagnosticCollector用来执行获取执行失败的错误结果 * 5.添加动态执行的编译环境 options ...
CLASSPATH: Java类路径,用于指定Java类文件的搜索路径。我们可以将多个目录或JAR文件用分号;分隔指定在CLASSPATH中。 PATH: 系统环境变量,包含可执行文件的搜索路径。我们需要将JAVA_HOME/bin添加到PATH中,这样我们...
classpath:前缀是不需要的,默认就是指项目的classpath路径下面; 如果要使用绝对路径,需要加上file:前缀表示这是绝对路径; 对于FileSystemXmlApplicationContext: 默认表示的是两种: 1.没有盘符的是项目工作路径,即...
将该路径设置为JAVA_HOME环境变量,并使用setx命令使其永久生效。 显示切换结果: 显示成功切换JAVA_HOME环境变量至所选JDK版本的信息。 退出操作: 用户按任意键后退出脚本执行。 使用方法: 运行脚本时,会列出...
2.1.3 jvm(java)与classpath 27 2.1.4 编译程序(javac)与classpath 30 .2.2 管理原始码与位码文档 31 2.2.1 编译程序(javac)与sourcepath 31 2.2.2 使用package管理类 33 2.2.3 使用import偷懒 36 2.3 ...
ansible-javax 用于以更简洁,更类似于Ansible的方式执行任意java类或jar的...要使用的Java JVM的路径。 如果未提供,将使用解析二进制路径的常规机制。 init_heap_size 设置应用程序的初始Java堆大小。 等效于-Xms'
37.classloader中,JDK的API、Classpath中的同web-inf中的class加载方式有什么区别? 38.列举三种以上垃圾回收算法,并比较其优缺点? 39.编写代码实现一个线程池 40.描述一下JVM加载class文件的原理机制? 41....
源代码来自http://blog.163.com/scau_09se01/blog/static/1817110742011214599452 本人在其基础上进行了些许修改,添加JAVA_HOME环境变量,解决了jdk安装路径包含空格时不能正确获取信息的bug
类路径生成器该节点的库有助于构建Java-Classpath。 样例代码: var classpathBuilder = require ( './classpathBuilder.js' ) ;classpathBuilder . build ( '<Directory>' , function ( classpath ) {console . log...
Core在8至17-ea的Java版本上进行了测试,它是一个完全独立,高级,免费和开放源代码的Java框架构建库,它对于扫描类路径,在运行时生成类,促进使用反射,扫描非常有用。文件系统,执行字符串化的源代码等等。 ...
如果使用Druid,则需参考druid-example.setting创建${classpath}/config/druid.setting文件,详情请参考官方文档 使用C3P0则需要参考c3p0-config-example.xml创建${classpath}/c3p0-config.xml来调节C3P0参数 此时...
使用Jflex和Antlr的Java中的Lexical Analyzer,对于语言“ fun”,请检查语法和有关language.pdf的规范以获取语言详细信息。 另外,您将需要设置antlr的路径,在我的情况下,这是命令:export CLASSPATH =“。:/ ...
推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它...