- 浏览: 634164 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (820)
- java开发 (110)
- 数据库 (56)
- javascript (30)
- 生活、哲理 (17)
- jquery (36)
- 杂谈 (15)
- linux (62)
- spring (52)
- kafka (11)
- http协议 (22)
- 架构 (18)
- ZooKeeper (18)
- eclipse (13)
- ngork (2)
- dubbo框架 (6)
- Mybatis (10)
- 缓存 (28)
- maven (20)
- MongoDB (3)
- 设计模式 (3)
- shiro (10)
- taokeeper (1)
- 锁和多线程 (3)
- Tomcat7集群 (12)
- Nginx (34)
- nodejs (1)
- MDC (1)
- Netty (7)
- solr (15)
- JSON (8)
- rabbitmq (32)
- disconf (7)
- PowerDesigne (0)
- Spring Boot (31)
- 日志系统 (6)
- erlang (2)
- Swagger (3)
- 测试工具 (3)
- docker (17)
- ELK (2)
- TCC分布式事务 (2)
- marathon (12)
- phpMyAdmin (12)
- git (3)
- Atomix (1)
- Calico (1)
- Lua (7)
- 泛解析 (2)
- OpenResty (2)
- spring mvc (19)
- 前端 (3)
- spring cloud (15)
- Netflix (1)
- zipkin (3)
- JVM 内存模型 (5)
- websocket (1)
- Eureka (4)
- apollo (2)
- idea (2)
- go (1)
- 业务 (0)
- idea开发工具 (1)
最新评论
-
sichunli_030:
对于频繁调用的话,建议采用连接池机制
配置TOMCAT及httpClient的keepalive以高效利用长连接 -
11想念99不见:
你好,我看不太懂。假如我的项目中会频繁调用rest接口,是要用 ...
配置TOMCAT及httpClient的keepalive以高效利用长连接
Classloader是从classpath中读取资源的一个类,一般我们用classloader来加载class,实际上,但凡是处在classpath中的文件,我们称之为资源,都可以用classloader来读取。
在java中的API里,有两种方式来使用classpath读取资源。
class里有一个getResource方法,classloader类里也有getResource方法,这两种API都可以从classpath中读取资源,但是也有一些区别。
class的getResource方法实际上也是用classloader来读取资源,但是起始路径不一样
这个API的起始路径是当前类的路径,如果要正确的读到资源,目标资源必须和当前class在同一级,或子目录里,可以用相对路径读取到。
加上/的读取方式,和调用classloader读取是同一个效果,这个读取代表的是某个classpath下的根路径。
这是一种错误的读取方式,使用classloader的时候,不可以指定/来读取。
例:
第一种读取,代表读取当前类同一级的文件name.properties
第二种和第三种读取等效,都是读取任意classpath根路径下的name.properties文件
MARK
在启动服务的时候,所有的依赖项都是以目录的形式存在在classpath下,这样classloader才能一个一个去加载,而getResource的API里的路径,也都是相对于每一个依赖的目录的路径。
参考:http://www.tuicool.com/articles/f6bYZj
http://lionbule.iteye.com/blog/1285323
在java中的API里,有两种方式来使用classpath读取资源。
引用
System.out.println(Bootstrap.class.getResource(""));
System.out.println(Bootstrap.class.getResource("/"));
System.out.println(Bootstrap.class.getClassLoader().getResource(""));
System.out.println(Bootstrap.class.getClassLoader().getResource("/"));
System.out.println(Bootstrap.class.getResource("name.properties"));
System.out.println(Bootstrap.class.getResource("/name.properties"));
System.out.println(Bootstrap.class.getClassLoader().getResource("name.properties"));
System.out.println(Bootstrap.class.getResource("/"));
System.out.println(Bootstrap.class.getClassLoader().getResource(""));
System.out.println(Bootstrap.class.getClassLoader().getResource("/"));
System.out.println(Bootstrap.class.getResource("name.properties"));
System.out.println(Bootstrap.class.getResource("/name.properties"));
System.out.println(Bootstrap.class.getClassLoader().getResource("name.properties"));
class里有一个getResource方法,classloader类里也有getResource方法,这两种API都可以从classpath中读取资源,但是也有一些区别。
class的getResource方法实际上也是用classloader来读取资源,但是起始路径不一样
引用
System.out.println(Bootstrap.class.getResource(""));
这个API的起始路径是当前类的路径,如果要正确的读到资源,目标资源必须和当前class在同一级,或子目录里,可以用相对路径读取到。
引用
System.out.println(Bootstrap.class.getResource("/"));
System.out.println(Bootstrap.class.getClassLoader().getResource(""));
System.out.println(Bootstrap.class.getClassLoader().getResource(""));
加上/的读取方式,和调用classloader读取是同一个效果,这个读取代表的是某个classpath下的根路径。
引用
System.out.println(Bootstrap.class.getClassLoader().getResource("/"));
这是一种错误的读取方式,使用classloader的时候,不可以指定/来读取。
例:
引用
System.out.println(Bootstrap.class.getResource("name.properties"));
System.out.println(Bootstrap.class.getResource("/name.properties"));
System.out.println(Bootstrap.class.getClassLoader().getResource("name.properties")
System.out.println(Bootstrap.class.getResource("/name.properties"));
System.out.println(Bootstrap.class.getClassLoader().getResource("name.properties")
第一种读取,代表读取当前类同一级的文件name.properties
第二种和第三种读取等效,都是读取任意classpath根路径下的name.properties文件
MARK
在启动服务的时候,所有的依赖项都是以目录的形式存在在classpath下,这样classloader才能一个一个去加载,而getResource的API里的路径,也都是相对于每一个依赖的目录的路径。
参考:http://www.tuicool.com/articles/f6bYZj
http://lionbule.iteye.com/blog/1285323
发表评论
-
BigDecimal/Long 前后端交互失去精度解决方法
2024-01-22 10:31 416BigDecimal/Long 前后端交互失去精度解决方法 ... -
在Java 8中可以通过下面的方式获取Map对象的第一个元素
2023-12-18 13:48 364Java 8中如何获取Map对象的第一个元素 -
用EXCEL批量生成INSERT语句
2023-03-18 11:19 743用EXCEL批量生成INSERT语句 -
使用Java访问FTP文件时再次调用方法client.retrieveFileStream(ftpFile)会返回null的问题
2023-01-07 21:50 772使用Java访问FTP文件时再次调用方法client.retr ... -
java获取本月最后一天
2022-12-28 08:29 2404java获取本月第一天或者最后一天方法 @Test ... -
www
2022-11-12 09:03 0public void saveTransScheduleBi ... -
Notepad++删除代码中的注释,可删除//单行注释和/**/多行注释
2022-10-20 14:17 807Notepad++删除代码中的注释,可删除//单行注释和/** ... -
接口限流算法有哪些
2022-05-05 23:27 252接口限流的几种算法 接口限流算法有哪些? nginx限流方案 ... -
CompletableFuture学习记录
2022-04-25 18:00 247CompletableFuture学习记录 -
java单例模式几种实现方式
2022-04-18 11:48 257java单例模式几种实现方式 -
临时的几个网站
2022-03-31 13:33 269https://www.cnblogs.com/chengxu ... -
Java Stream - 如何filter带谓词
2022-03-23 23:53 249Java Stream Java Lambda语法 J ... -
URLConnection的连接、超时、关闭用法总结
2022-03-08 17:23 573URLConnection的连接、超时、关闭用法总结 jav ... -
关于java中的this::
2022-02-26 23:07 222关于java中的this:: -
StringRedisTemplate和RedisTemplate的区别和选择
2022-02-10 23:05 261StringRedisTemplate和RedisTempla ... -
ForkJoinPool初略分析
2022-02-10 11:44 287ForkJoinPool初略分析 多线程 ForkJoin ... -
service中@NotNull的使用
2022-01-23 13:48 1522@Validated和@NotNull加到什么上面,接口还是 ... -
Java8 Collectors.toMap的两个大坑
2022-01-21 15:54 325Java8 Collectors.toMap的两个大坑 -
踩坑之SimpleAsyncTaskExecutor
2022-01-13 20:50 828踩坑之SimpleAsyncTaskExecutor Sp ... -
都在建议你不要直接使用 @Async 注解
2022-01-10 11:54 781引用如果不自定义异步方法的线程池默认使用SimpleAsync ...
相关推荐
java实现 获取指定路径下 指定格式 的所有文件
在Java编程中,读取项目中的文件,特别是位于`src`目录下的文件,是一个常见的需求。这涉及到对项目结构的理解和使用Java I/O流的知识。`src`目录通常包含源代码文件,而运行时,这些文件会被编译并放置到类路径...
Java的classpath是每个Java开发者都必须了解的关键概念,它决定了JVM(Java虚拟机)在执行Java程序时如何查找和加载所需的类文件。本文将深入探讨classpath的基本原理、配置方式以及如何确保`javac`正确编译运行Java...
本文将深入探讨如何使用Java读取资源文件,特别是properties类型的文件。 资源文件通常存储在项目的类路径(classpath)下,可以是.properties、.txt、.xml等形式,它们提供了与代码分离的配置选项。对于....
### Java 文件路径获取方法详解 #### 一、引言 在Java开发中,经常会遇到需要获取文件路径的情况,尤其是在处理配置文件、图片等资源时。本文将详细介绍Java中获取文件路径的各种方法及其应用场景,帮助开发者更好...
类加载器(`ClassLoader`)负责将编译后的`.class`文件加载到Java虚拟机(JVM)中执行,而类路径(`ClassPath`)则是指明了这些`.class`文件的位置。本文主要围绕Java类加载器和类路径展开讨论,以加深对Java运行时...
### Java读取PDF文件中的数据 #### 知识点概览 本文将详细介绍如何使用Java语言来读取PDF文件中的文本内容。此方法简洁高效,适用于处理大量的PDF文档。主要涉及的技术栈包括Java编程基础、PDFBox库的使用以及文件I...
Java 读取 Word、PDF 格式文档方法 Java 是一种广泛应用的编程语言,对文档操作是其重要的应用场景之一。本文将介绍 Java 如何读取 Word、PDF 格式文档的几种方法。 使用 Jacob Jacob 是一个桥接工具,连接 Java ...
- **作用**:当Java程序运行时,JVM会根据`classpath`来定位所需的类文件(`.class`文件)和其他资源文件。如果没有正确配置`classpath`,可能会导致类找不到异常(ClassNotFoundException)等错误。 #### 三、环境...
总结,Java中读取properties文件的方法包括使用Properties类加载文件、通过ClassLoader获取类路径下的文件以及利用try-with-resources语句进行资源管理。根据具体的应用场景,选择合适的方法可以更高效地处理配置...
在Java编程中,读取CSV(Comma Separated Values)文件是一项常见的任务,尤其是在处理数据导入、数据分析或数据存储时。CSV文件因其简洁、通用的格式而被广泛使用。本篇将详细介绍如何在Java中有效地读取CSV文件,...
在Java编程中,`CLASSPATH`是一个至关重要的环境变量,它定义了JVM在执行时查找类文件的位置。本文将详细解析如何在Java中获取`CLASSPATH`路径,并介绍相关的方法和技术。 首先,`ClassLoader`类是Java中负责加载类...
在Java编程中,读取配置文件是常见的任务,特别是在构建可扩展和灵活的应用程序时。配置文件通常存储了应用程序的参数、数据库连接信息、API密钥等敏感数据,需要在运行时动态加载。本实例代码将展示如何使用`Class....
在Java编程中,`properties`文件是一种常用的存储配置信息的方式,它以键值对的形式组织数据,便于程序在运行时动态获取和修改配置。本文将详细介绍如何在Java中读取`properties`配置文件。 首先,我们需要了解`...
本篇文章将详细探讨如何在Java中读取`properties`文件的值。 ### 1. `java.util.Properties` 类 Java提供了一个内置类 `java.util.Properties`,专门用于处理`.properties`文件。这个类继承了`HashTable`,并提供...
首先,使用Java类加载器(ClassLoader)获取资源路径是读取本地资源文件的一种方法。代码示例中的`getClass().getClassLoader().getResource("menu.json").toString();`就是实现该功能的代码片段。该方法能够获取到...
jxl是一个开源的Java库,它允许开发者读取、写入和修改Excel文件(.xls格式),非常适合在没有Microsoft Excel的情况下操作Excel数据。 首先,确保在项目中引入了jxl.jar库。这通常通过将jxl.jar添加到项目的类路径...
本篇文章将深入探讨如何在Java中读取`properties`文件,无需依赖任何第三方库。 首先,我们需要了解Java的标准库中提供的`java.util.Properties`类。这个类提供了一种存储和加载属性列表的方法,它能够处理`....
在Java编程环境中,读取Word文件通常涉及到对Microsoft Office文档格式的理解,以及使用特定的库来处理这些文件。本主题将深入探讨如何使用Java IO和`tm-extractors-0.4.jar`库来实现这一功能。`tm-extractors`是一...
Java读取Jar中资源文件的实现与应用 Java读取Jar中资源文件是一种常见的操作,在开发Java项目时,经常需要读取jar包中的资源文件。下面将详细介绍Java读取Jar中资源文件的实现代码和应用。 一、Java读取Jar中资源...