请教classloader问题与类的反射问题
类如下:
import java.io.*;
import org.jdom.input.SAXBuilder;
import org.jdom.Document;
import org.jdom.*;
import java.util.List;
import java.lang.reflect.Method;
import java.lang.reflect.*;
public class Test {
private static String path = null;
public static void init()
{
try {
FileInputStream fi = new FileInputStream(./SynEmip.xml);
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(fi);
Element root= doc.getRootElement();
List providerList = root.getChildren();
int len = providerList.size();
cls_provider = new Class[len];
for (int i = 0; i < len; i++) {
Element provider = (Element) providerList.get(i);
String className = provider.getText();
System.out.println("-------->className="+className+"<----------");
//cls_provider[i] = Class.forName(className);也是不行的
cls_provider[i] = Class.forName(className,false,ClassLoader.getSystemClassLoader());
}
}
catch (FileNotFoundException ex) {
ex.printStackTrace();
}
catch (JDOMException ex) {
ex.printStackTrace();
}
catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
test();
}
public static void test()
{
Test test =new Test();
test.testClassLoader();
init();
}
public void testClassLoader()
{
System.out.println("-------->ClassLoader="+this.getClass().getClassLoader().toString()+"<---------");
System.out.println("-------->ClassLoader="+ClassLoader.getSystemClassLoader()+"<---------");
}
}
而那个配置文件也很简单SynEmip.xml
<?xml version="1.0" encoding="GB2312"?>
<providers>
<provider>com.usermanager.syn.service.SynEmipToTestProvider</provider>
</providers>
我把异常也贴出来
-------->ClassLoader=weblogic.utils.classloaders.ChangeAwareClassLoader@74c144( finder: weblogic.utils.classloaders.CodeGenClassFinder@19fc023, annotation: usermgt@usermgt, parent: weblogic.utils.classloaders.GenericClassLoader@13c765e( finder: weblogic.utils.classloaders.CodeGenClassFinder@ff65bf, annotation: usermgt@, parent: weblogic.utils.classloaders.GenericClassLoader@9b86ea( finder: weblogic.utils.classloaders.CodeGenClassFinder@d5714b, annotation: ApplicationClassLoader@, parent: weblogic.utils.classloaders.GenericClassLoader@e7b3f2( finder: weblogic.utils.classloaders.CodeGenClassFinder@100fa88, annotation: null, parent: sun.misc.Launcher$AppClassLoader@19fcc69))))<---------
-------->ClassLoader=sun.misc.Launcher$AppClassLoader@19fcc69<---------
-------->className=
com.usermanager.syn.service.SynEmipToTestProvider
<----------
java.lang.ClassNotFoundException:
com/usermanager/syn/service/SynEmipToTestProvider
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:219)
这是为何阿
异常就出现在“Class.forName(className,false,ClassLoader.getSystemClassLoader());”
这个代码
如果是“Class.forName(className)”也是同样的结果
大虾能解析一下这是为何吗??
再次强调j2se是好的,而web应用不行,我的web应用部署在weblogic上,操作系统是solaris9
相关推荐
1960-2023年世界各国国内生产总值/世界各国GDP数据
1960-2023年世界各国国内生产总值/世界各国GDP数据 1、时间:1960-2023年 2、来源:世界银行 3、指标:国家名称、年份、国内生产总值 4、范围:世界各国
gb28181-go 双端合一实践:SIP/RTP 信令与媒体流开发指南
安防视频接入领域,设备端与平台端的协议理解不一致是常态,SIP 信令交互与 RTP 媒体传输构成了国标 GB/T 28181 的两大核心。SIP 负责会话建立与指令控制,RTP 负责视音频数据承载。在实际工程中,UAC(设备端)与 UAS(平台端)的角色会随业务流程切换,传统双端分离的开发方式常导致联调成本高、状态机不一致。采用 Go 语言实现的 gb28181-go 通过单库双端设计,将 UAC 注册、目录上报、点播推流与 UAS 的注册管理、点播邀请、云台控制整合进同一套 SIP 栈,配合并发模型解耦信
GB/T 28181双端合一Go库实战:设备端与平台端信令、媒体及坑位全解
在安防音视频接入与国标网关建设中,GB/T 28181协议往往被视为最复杂的环节之一。它基于SIP信令扩展出注册、心跳、点播、回放等一系列流程,同时需要兼顾设备侧(UAC)与平台侧(UAS)的差异化逻辑。传统开发中,设备厂商与平台团队各自维护一套协议栈,信令字段对齐成本极高。而一个双端合一的开源实现,将SIP编解码、SDP协商、PS流封装解析等底层能力统一收敛,一份代码既能模拟摄像头注册到平台,也能作为平台接收真实终端,大幅降低信令联调与媒体排障难度。文章从SIP信令基础讲起,深入剖析设备注册鉴权、心跳保活
1960-2023年世界各国人均国民总收入数据
1960-2023年世界各国人均国民总收入数据 1、时间:1960-2023年 2、来源:世界银行 3、指标:国家名称、年份、人均国民总收入,阿特拉斯法(现行美元) 4、范围:世界各国
1960-2023年世界各国国民总收入数据
1960-2023年世界各国国民总收入数据 1、时间:1960-2023年 2、来源:world bank 3、指标:国家/地区名称、年份、国民总收入 4、范围:世界各国


Java SE

