mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
fix ClassLoaderUtil
This commit is contained in:
parent
d71be8ef1f
commit
e13b625942
@ -13,6 +13,8 @@
|
|||||||
package org.dromara.hutool.core.classloader;
|
package org.dromara.hutool.core.classloader;
|
||||||
|
|
||||||
import org.dromara.hutool.core.exception.HutoolException;
|
import org.dromara.hutool.core.exception.HutoolException;
|
||||||
|
import org.dromara.hutool.core.lang.Console;
|
||||||
|
import org.dromara.hutool.core.lang.caller.CallerUtil;
|
||||||
import org.dromara.hutool.core.reflect.ClassDescUtil;
|
import org.dromara.hutool.core.reflect.ClassDescUtil;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -27,19 +29,21 @@ import java.io.File;
|
|||||||
public class ClassLoaderUtil {
|
public class ClassLoaderUtil {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取{@link ClassLoader}<br>
|
* 获取{@link ClassLoader},获取顺序如下:
|
||||||
* 获取顺序如下:<br>
|
* <ol>
|
||||||
*
|
* <li>获取调用者的ContextClassLoader</li>
|
||||||
* <pre>
|
* <li>获取当前线程的ContextClassLoader</li>
|
||||||
* 1、获取当前线程的ContextClassLoader
|
* <li>获取ClassLoaderUtil对应的ClassLoader</li>
|
||||||
* 2、获取当前类对应的ClassLoader
|
* <li>获取系统ClassLoader({@link ClassLoader#getSystemClassLoader()})</li>
|
||||||
* 3、获取系统ClassLoader({@link ClassLoader#getSystemClassLoader()})
|
* </ol>
|
||||||
* </pre>
|
|
||||||
*
|
*
|
||||||
* @return 类加载器
|
* @return 类加载器
|
||||||
*/
|
*/
|
||||||
public static ClassLoader getClassLoader() {
|
public static ClassLoader getClassLoader() {
|
||||||
ClassLoader classLoader = getContextClassLoader();
|
ClassLoader classLoader = CallerUtil.getCallerCaller().getClassLoader();
|
||||||
|
if(null == classLoader){
|
||||||
|
classLoader = getContextClassLoader();
|
||||||
|
}
|
||||||
if (classLoader == null) {
|
if (classLoader == null) {
|
||||||
classLoader = ClassLoaderUtil.class.getClassLoader();
|
classLoader = ClassLoaderUtil.class.getClassLoader();
|
||||||
if (null == classLoader) {
|
if (null == classLoader) {
|
||||||
@ -49,6 +53,16 @@ public class ClassLoaderUtil {
|
|||||||
return classLoader;
|
return classLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取调用者的{@link ClassLoader}
|
||||||
|
*
|
||||||
|
* @return {@link ClassLoader}
|
||||||
|
* @since 6.0.0
|
||||||
|
*/
|
||||||
|
public static ClassLoader getCallerClassLoader() {
|
||||||
|
return CallerUtil.getCallerCaller().getClassLoader();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当前线程的{@link ClassLoader}
|
* 获取当前线程的{@link ClassLoader}
|
||||||
*
|
*
|
||||||
|
@ -6,6 +6,12 @@ import org.junit.jupiter.api.Test;
|
|||||||
|
|
||||||
public class ClassLoaderUtilTest {
|
public class ClassLoaderUtilTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getCallerClassLoaderTest() {
|
||||||
|
final ClassLoader callerClassLoader = ClassLoaderUtil.getCallerClassLoader();
|
||||||
|
Assertions.assertEquals(ClassLoaderUtilTest.class.getClassLoader(), callerClassLoader);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isPresentTest() {
|
public void isPresentTest() {
|
||||||
final boolean present = ClassLoaderUtil.isPresent("org.dromara.hutool.core.classloader.ClassLoaderUtil");
|
final boolean present = ClassLoaderUtil.isPresent("org.dromara.hutool.core.classloader.ClassLoaderUtil");
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
<Automatic-Module-Name>org.dromara.hutool.extra</Automatic-Module-Name>
|
<Automatic-Module-Name>org.dromara.hutool.extra</Automatic-Module-Name>
|
||||||
<!-- versions -->
|
<!-- versions -->
|
||||||
<velocity.version>2.3</velocity.version>
|
<velocity.version>2.3</velocity.version>
|
||||||
<beetl.version>3.14.1.RELEASE</beetl.version>
|
<beetl.version>3.15.6.RELEASE</beetl.version>
|
||||||
<rythm.version>1.4.2</rythm.version>
|
<rythm.version>1.4.2</rythm.version>
|
||||||
<freemarker.version>2.3.32</freemarker.version>
|
<freemarker.version>2.3.32</freemarker.version>
|
||||||
<enjoy.version>4.9.21</enjoy.version>
|
<enjoy.version>4.9.21</enjoy.version>
|
||||||
@ -43,7 +43,7 @@
|
|||||||
<zxing.version>3.5.1</zxing.version>
|
<zxing.version>3.5.1</zxing.version>
|
||||||
<net.version>3.9.0</net.version>
|
<net.version>3.9.0</net.version>
|
||||||
<emoji-java.version>5.1.1</emoji-java.version>
|
<emoji-java.version>5.1.1</emoji-java.version>
|
||||||
<spring-boot.version>2.7.10</spring-boot.version>
|
<spring-boot.version>2.7.13</spring-boot.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user