请教一个classload 的问题。。 at com.testnewface.main(testnewface.java:58)是return defineClass(classname,classbyte,0,readsize);这句吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是这一句 我怀疑是不是classname 的这个class找不到!!。。给点指点吧 //testnewface.javapackage com;//使用的主程序public class testnewface { public static void main(String[] args) throws java.lang.Exception {// 共用初使化参数,开始 Class testc; Object testo; cloader cl=new cloader();// 共用初使化参数,结束//方法 1 的例子代码,newface是本地接口类,newface.class本地已经存在 开始 testc=cl.load("testfacea.file","testfacea"); testo=testc.newInstance(); System.out.println("Instance has over!"); ((newface)testo).out("方法1 第(1)种使用方法"); System.out.println("outsize="+((newface)testo).outsize("1111","aaaa")); testc=cl.load("testfacea.fisle","testfacea"); testo=testc.newInstance(); newface newface1=(newface)testo; newface1.out("方法1 第(2)种使用方法"); System.out.println("outsize="+newface1.outsize("22222","bbbbb"));//方法 1 的例子代码,结束 }}//newface.java 接口package com;public interface newface { public void out(String xx); public int outsize(String x1,String x2); }//testfacea.java 实现上接口package com;/*newface的实现*/public class testfacea implements newface{ public void out(String xx) { System.out.println(xx+" for testfacea "); } public int outsize(String x1,String x2) { return x1.length()+x2.length(); }}//cloader.javapackage com;/*要想自己完成从一个 byte[] 转换到一个Class 必须要 extends ClassLoader因为ClassLoader中的方法defineClass是 protected 要使用只有 extends ClassLoader*/import com.newface;class cloader extends ClassLoader { static int maxsize=10000; public Class load(String namefile,String classname) throws java.lang.Exception { try { //进行判断这个class是否已经调入,已经有就直接返回,不然就调入 Class ctmp=this.findLoadedClass(classname); System.out.println(ctmp.getName()+" is load"); return ctmp; } catch (Exception e) { //System.out.println(e); } java.io.FileInputStream in=new java.io.FileInputStream("d://"+namefile); byte[] classbyte=new byte[maxsize];//实际应用时完全可以对一个文件进行加解密处理,只要保证使用defineClass时classbyte中//已经解密后的内容就可以 int readsize; readsize=in.read(classbyte); System.out.println("读文件长:"+readsize); in.close(); System.out.println("the classname:"+classname); return defineClass(classname,classbyte,0,readsize); }} 两种调用方法的区别,大家都进来看看,发表发表意见 java怎么读取txt文件 日期函数格式linux/windows求解~~~ 本地部署不出错,发布出错,求原因 什么是不兼容的类型,怎么解决啊?? javac Hello.java时,找不到Hello.java文件 请问:关于struts2.0 服务器端验证Validator 弱問。 你会吗?一个极简单的问题. 用JAVA开发 中国式报表,请大家给点意见 动态编程之classloader 在class里访问https。该如何配置证书。高分重谢。。。。。。。。。。。。。。。。。。。。。
给点指点吧
//使用的主程序
public class testnewface {
public static void main(String[] args) throws java.lang.Exception
{
// 共用初使化参数,开始
Class testc;
Object testo;
cloader cl=new cloader();
// 共用初使化参数,结束//方法 1 的例子代码,newface是本地接口类,newface.class本地已经存在 开始
testc=cl.load("testfacea.file","testfacea");
testo=testc.newInstance();
System.out.println("Instance has over!");
((newface)testo).out("方法1 第(1)种使用方法");
System.out.println("outsize="+((newface)testo).outsize("1111","aaaa")); testc=cl.load("testfacea.fisle","testfacea");
testo=testc.newInstance();
newface newface1=(newface)testo;
newface1.out("方法1 第(2)种使用方法");
System.out.println("outsize="+newface1.outsize("22222","bbbbb"));
//方法 1 的例子代码,结束 }
}//newface.java 接口
package com;public interface newface { public void out(String xx);
public int outsize(String x1,String x2); }
//testfacea.java 实现上接口
package com;
/*
newface的实现
*/
public class testfacea implements newface{ public void out(String xx) {
System.out.println(xx+" for testfacea ");
}
public int outsize(String x1,String x2) {
return x1.length()+x2.length();
}}
//cloader.javapackage com;/*
要想自己完成从一个 byte[] 转换到一个Class 必须要 extends ClassLoader
因为ClassLoader中的方法defineClass是 protected 要使用只有 extends ClassLoader
*/
import com.newface;
class cloader extends ClassLoader {
static int maxsize=10000;
public Class load(String namefile,String classname) throws java.lang.Exception
{ try {
//进行判断这个class是否已经调入,已经有就直接返回,不然就调入
Class ctmp=this.findLoadedClass(classname);
System.out.println(ctmp.getName()+" is load");
return ctmp;
}
catch (Exception e) {
//System.out.println(e);
}
java.io.FileInputStream in=new java.io.FileInputStream("d://"+namefile);
byte[] classbyte=new byte[maxsize];
//实际应用时完全可以对一个文件进行加解密处理,只要保证使用defineClass时classbyte中
//已经解密后的内容就可以
int readsize;
readsize=in.read(classbyte);
System.out.println("读文件长:"+readsize);
in.close();
System.out.println("the classname:"+classname);
return defineClass(classname,classbyte,0,readsize);
}
}