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

leewer 2006-02-21 06:29:15

就是说不知道jar包中有些什么类,想动态加载把这些类加入到一个hashtable中
...全文
134 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
你到底想干什么?说出来,或者有其他解决办法。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧