用程序怎么访问jar包中的class类

leewer 2006-02-21 06:29:15

就是说不知道jar包中有些什么类,想动态加载把这些类加入到一个hashtable中
...全文
97 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
leewer 2006-02-22
我的意思是浏览WEB-INF/lib下的指定包,并把某些特殊的类预先装入!
回复
leewer 2006-02-22
自己解决了

就是用java.net.JarFile

try {
JarFile myjarFile = new JarFile(classPath + "/lib/xxxx.jar");
Enumeration enumer=myjarFile.entries();
while(enumer.hasMoreElements()){
JarEntry entry=(JarEntry)enumer.nextElement();
if(entry.getName().startsWith("web/style/nodes/")){
fileList.add(entry.getName());
}
}

} catch (IOException ex) {

}

if(fileList.size()>0){

for(int i=0;i<fileList.size();i++){
try {
// String classname=filename[i].substring(0,filename[i].length()-6);
// Class x=Class.forName(NodeDeal.classPackage +classname);
String className=fileList.get(i).toString().replaceAll("/",".");
Class x=Class.forName(className.substring(0,className.length()-6));
Class p=x.getSuperclass();
if(p.getName().indexOf("NodeDealer")!=-1){
Class[] interfaces = x.getInterfaces();
for (int j = 0; j < interfaces.length; j++) {
if (interfaces[j].getName().indexOf("NodeDeal")!=-1) {
try {
NodeDealer obj=(NodeDealer)x.newInstance();
myTable.put(obj.getNodeName(),obj);
} catch (Exception ex1) {
}
}
}
}

} catch (ClassNotFoundException ex) {

}
}
回复
Paripatetic 2006-02-21
把jar文件的路径(...*.jar)包含到classpath变量中去
回复
zengguiyeah 2006-02-21
可以用JAVA.IO.FILE查找文件目录和文件,然后把它们一个个的装进HASHTABLE,不过要使用时就要注意要转换成可以使用的方法
回复
执假以为真 2006-02-21
你到底想干什么?说出来,或者有其他解决办法。
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2006-02-21 06:29
社区公告
暂无公告