首页 > 其他分享 >使用ClassLoader.getSystemResource更新上线后空指针异常

使用ClassLoader.getSystemResource更新上线后空指针异常

时间:2024-08-30 17:52:55浏览次数:12  
标签:依赖 getSystemResource ClassLoader jar 后空 dependencies 服务器

 目录

 

问题描述:

原问题代码:

问题原因以及解决思路:

解决方法:


问题描述:

项目中使用到一个功能,于是在资源路径下加了点依赖包:

更新上线后,发现使用ClassLoader.getSystemResource("dependencies")找不到依赖包

原问题代码:

URL resourceURL = ClassLoader.getSystemResource("dependencies");
String dependence = resourceURL.getPath();

问题原因以及解决思路:

本地项目启动不依赖jar包,所以这个路径能找到,更新到线上是以jar包的形式,所以需要把所依赖的这些包文件也放到线上服务器中,指明路径。

解决方法:

代码改成使用相对目录:

ClassPathResource classPathResource = new ClassPathResource("/dependencies");
String dependence = classPathResource.getPath();

同时将所依赖的dependencies文件夹放到服务器上与jar包所在的同级目录下,重启服务器,问题解决。

标签:依赖,getSystemResource,ClassLoader,jar,后空,dependencies,服务器
From: https://blog.csdn.net/yszbrzdd/article/details/141644422

相关文章

  • InputStream inputStream = classLoader.getResourceAsStream("aaa.properties") ; 
    问:InputStreaminputStream=classLoader.getResourceAsStream("aaa.properties"); 获取到的 inputStream 是null答:当您尝试使用ClassLoader的getResourceAsStream方法来获取一个资源文件(如"aaa.properties")的InputStream,但得到的结果是null时,这通常意味着资源文......
  • 深入理解 Java 类加载机制:Arthas classloader 命令解析
    引言Java虚拟机(JVM)的类加载机制是Java应用运行的基础。了解类加载器(ClassLoader)的工作原理对于解决类冲突、热部署、资源查找等问题至关重要。Arthas,作为一个强大的Java诊断工具,提供了classloader命令,帮助开发者深入理解JVM的类加载机制。本文将详细介绍classloa......
  • JVM:SpringBoot TomcatEmbeddedWebappClassLoader
    文章目录一、介绍二、SpringBoot中TomcatEmbeddedWebappClassLoader与LaunchedURLClassLoader的关系一、介绍TomcatEmbeddedWebappClassLoader是SpringBoot在其内嵌Tomcat容器中使用的一个类加载器(ClassLoader)。在SpringBoot应用中,当你选择将应用打包成可执......
  • 在使用InputStream templateStream = this.getClass().getClassLoader().getResourceA
    在使用 this.getClass().getClassLoader().getResourceAsStream()读取项目目录路径下的文件需要注意在pom.xml文件中加入<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-......
  • 核心(Hutool-core)工具类(类加载工具-ClassLoaderUtil)
    介绍提供ClassLoader相关的工具类,例如类加载(Class.forName包装)等方法获取ClassLoadergetContextClassLoader获取当前线程的ClassLoader,本质上调用Thread.currentThread().getContextClassLoader()getClassLoader按照以下顺序规则查找获取ClassLoader:获取当前线程的Context......
  • MySQL忽略后空格符
    select"张三"="张三"#输出1select"张三"="张三"#输出0select"张三"="张三"#输出0根据上面的SQL可以看到,如果MySQL的比较条件参数是字符串,那么MySQL会自动省略字符串中的后空格。参考文档:https://deepinout.com/sql/sql-questions/146_sql_......
  • 文件删除后空间未释放
    文件删除后空间未释放   第一步:找到处于delete状态的较大的文件,以及使用进程lsof|grep-idelete|sort-nrk7|head|awk'BEGIN{print"file-size","PID","system"}{print$7/1024/1024"M",$2,$9}'|column-t  删除这个进程,然后重新启动即可,这个是进程占......
  • JVM类加载器ClassLoader源码剖析
    在JVM类加载器分类中通过ClassLoader获取了不同类型的类加载器,它是如此之重要那么ClassLoader究竟为何物呢?通过源码分析(以jdk17示例):调试跟踪ClassLoader:......
  • 类加载器(ClassLoader)
    类加载器(ClassLoader)类加载、编译类加载器用于将Java类(此时的Java类指的是已经从.java编译成.class的字节码文件)通过JVM加载到内存中才能运行。编译java文件包名为:packagecom.melody.sec.classloader;、类名称为:DefineClassDemo编译java文件javaccom/melody/sec/class......
  • Java 安全基础之 Java 反射机制和 ClassLoader 类加载机制
    目录Java反射机制反射java.lang.RuntimeClassLoader类加载机制URLClassLoaderJava反射机制Java反射(Reflection)是Java非常重要的动态特性。在运行状态中,通过Java的反射机制,我们能够判断一个对象所属的类。了解任意一个类的所有属性和方法。能够调用任意一个对象的任意方......