添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

0.问题描述

通过下面的代码获得配置文件的路径,并传给FileReader,发现找不到系统路径

String path=Thread.currentThread().getContextClassLoader().getResource("jdbc.properties").getPath();
try( FileReader fileReader  =  new FileReader(path)) {
 //.......省略

 通过打印path,发现

/D:/Intelli%20J/Projects/JavaBasisLearning/out/production/Reflect/jdbc.properties

那个20%应该是空格的替代。而且经过测试中文也会有相应的问题

所以FIleReader才会找不到系统路径。

1.解决方法

第一种方法,直接通过转为获得字节流的方法

InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc.properties")

第二种方法,如果是获得资源是配置文件类型,那么可以通过资源绑定器解决

  ResourceBundle rb  = ResourceBundle.getBundle("jdbc");

  写文件的时候注意规范,这样就会少出幺蛾子。

文章目录0.问题描述1.解决方法2.总结0.问题描述  通过下面的代码获得配置文件的路径,并传给FileReader,发现找不到系统路径String path=Thread.currentThread().getContextClassLoader().getResource("jdbc.properties");try( FileReader fileReader = new FileReader(path)) { //.......省略}结果 通过打印path,发现/D:/I
Exception in thread “main” javax.imageio.IIOException: Can’t read input file!:无法读取输入文件! 原可以从两个方面分析: 路径中文乱码问题 target/classes文件夹中并没有到图片 加粗样式看下代码: public class ImageUtils { private static String basePath=Thread.currentThread().getContextClassLoader().getResource().getPath(); public static v
问题描述 今天在学习尚硅谷小项目的时候看到老师写的代码中用到了 JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties"); 这样一段代码,目的是为了加载jdbc.properties这个配置文件,但是我发现我自己使用的时候是空指针异常。非常莫名其妙。 于是乎,在网上了一堆资料,发现很多人都在文章中推荐使用 Thread.currentThread().getContextClassLoader(). * Returns the context ClassLoader for this Thread. The context * ClassLoader is provided by the creator of the thread for use * by code running in this t...
今天在写项目的时候需要使用Thread.currentThread().getContextClassLoader().getResource("")来获取项目的根目录读取一下配置文件,但是实际运行之后发现获取到的是tomcat/lib目录,网上查了一下资料以后发现是tomcat加载机制的问题,默认优先加载web容器的一些加载。 解决方法就是将tomcat的conf目录下的context.x
getResourceAsStream ()返回的是inputstream getResource()返回:URL Class.getResource("")    返回的是当前Class这个所在包开始的为置 Class.getResource("/") 返回的是classpath的位置 getClassLoader().getResource("")  返回的是classpath的位置
使用Java的反射机制时,这就需要使用Class.forName()方法。使用该方法需要读取properties文件,继而需要创建流,而创建流就需要获取文件读取地址。而使用上述方法创建地址时报错,分析错误发现,地址有问题获取的地址中出现了乱码,继续测试,发现只要地址中出现中文或者特殊字符就会出现该问题。 String path=Thread.currentThread().getContextClassLoader().getResource("jdbc.properties").getPath();
一、问题描述 通过getClassLoader()的方式获取jar包中的资源,为空: this.getClassLoader().getResources("com/xxxx/test/Start.class").hasMoreElements(); this.getClassLoader().getResourceAsStream("test.txt"); 使用ClassGraph,可以换成包名,看是否能获取到: try (ScanResult scanResult = new Clas
如果 `Thread.currentThread().getContextClassLoader().getResources()` 方法不到资源,可能是因为资源路径不正确或资源文件不存在导致的。你可以尝试以下几个方法: 1. 检查资源路径:检查传递给 `getResources()` 方法的资源路径是否正确,包括路径的格式、拼写和大小写。另外,如果资源路径是相对路径,需要确保它相对于当前加载器的根路径是正确的。 2. 检查资源文件是否存在:如果资源路径正确,但是仍然不到资源,可能是因为资源文件不存在。你可以手动检查资源文件的路径和文件名是否正确,或者使用其他工具查资源文件。 3. 检查 ClassLoader:如果当前线程的 ClassLoader 无法资源,可能是因为它没有正确地加载到应用程序的 Classpath 中。你可以检查应用程序的 Classpath,确保资源文件所在的目录或 Jar 包已经被正确地添加到 Classpath 中。 4. 检查资源文件的访问权限:如果资源文件位于受保护的目录中,可能需要检查当前线程的访问权限。你可以使用文件系统的权限管理功能来检查或更改文件的访问权限。 如果你仍然无法解决问题,可以考虑使用其他工具或框架来加载指定路径下的所有资源,例如 Spring Framework 中的 ResourceLoader 接口或者 Apache Commons IO 库中的 FileUtils