别人编译生成的java文件.class,我怎样调用呢?比如别人生成了accountServcice.class类,这个.class还需要配置文件,我在我的类中怎么调用它呢?谢谢!
解决方案 »
- 这代码看不懂 谁可不可以帮我注释一下 或说说是什么意思
- 求html 页面MP4播放器例子 希望我们一同把他解决掉大家进来顶一下把 全分抛出 拼了
- 又是一个复合赋值运算与简单赋值问题
- 如何给showOptionDialog里的按钮添加快捷键
- 这样错了吗?
- 在j2se中,java获取错误发生在第几行?
- 请问各位,java做的图形能不能保存成gif格式的啊!
- 新年好,java新手100分求助简单问题!
- Graphics2D中的DrawString中输出的字体,能够设置字体的宽度和高度吗?
- 我要学习JAVA,不知怎么入手。请哥、姐把我领进门吧!不胜感激!
- 谁知道 FileDescriptor 的作用?
- 通信专业的研究生主要考什么啊 ?和计算机软件 关系大吗?
Class cls = Class.forName("com.goodtion.sweetop.Method1");
Method methlist[] = cls.getDeclaredMethods();
for (int i = 0; i < methlist.length; i++) {
Method m = methlist[i];
System.out.println("name = " + m.getName());
System.out.println("decl class = " + m.getDeclaringClass());
Class pvec[] = m.getParameterTypes();
for (int j = 0; j < pvec.length; j++)
System.out.println("param #" + j + " " + pvec[j]);
Class evec[] = m.getExceptionTypes();
for (int j = 0; j < evec.length; j++)
System.out.println("exc #" + j + " " + evec[j]);
System.out.println("return type = " + m.getReturnType());
System.out.println("-----");
}
} catch (Throwable e) {
System.err.println(e);
}
Class cls = Class.forName("com.goodtion.sweetop.Method2");
Class partypes[] = new Class[2];
partypes[0] = Integer.TYPE;
partypes[1] = Integer.TYPE;
Method meth = cls.getMethod("add", partypes);
Method2 methobj = new Method2();
Object arglist[] = new Object[2];
arglist[0] = new Integer(37);
arglist[1] = new Integer(47);
Object retobj = meth.invoke(methobj, arglist);
Integer retval = (Integer) retobj;
System.out.println(retval.intValue());
} catch (Throwable e) {
System.err.println(e);
}
Class cls = Class.forName("com.goodtion.sweetop.Constructor1");
Constructor ctorlist[] = cls.getDeclaredConstructors();
for (int i = 0; i < ctorlist.length; i++) {
Constructor ct = ctorlist[i];
System.out.println("name = " + ct.getName());
System.out.println("decl class = " + ct.getDeclaringClass());
Class pvec[] = ct.getParameterTypes();
for (int j = 0; j < pvec.length; j++)
System.out.println("param #" + j + " " + pvec[j]);
Class evec[] = ct.getExceptionTypes();
for (int j = 0; j < evec.length; j++)
System.out.println("exc #" + j + " " + evec[j]);
System.out.println("-----");
}
} catch (Throwable e) {
System.err.println(e);
}
Class cls = Class.forName("com.goodtion.sweetop.Constructor2");
Class partypes[] = new Class[2];
partypes[0] = Integer.TYPE;
partypes[1] = Integer.TYPE;
Constructor ct = cls.getConstructor(partypes);
Object arglist[] = new Object[2];
arglist[0] = new Integer(37);
arglist[1] = new Integer(47);
Object retobj = ct.newInstance(arglist);
} catch (Throwable e) {
System.err.println(e);
}
如果accountServcice有包名如com.goodtion.sweetop
建文件夹com goodtion sweetop 3个
com 包含 goodtion
goodtion包含 sweetop 再把accountServcice.class放里面如果有包的话 导入的时候也加上com.goodtion.sweetop.*;
你得弄明白account.class有没包,没包直接放就可以了
只是在一般的编译器里可能因为缺乏java文件而无法在编译期辨认
javac编译 java命令执行
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;public class FileClassLoader extends ClassLoader {
public static final String drive="D:\\sweetop\\搜索引擎\\TomcatTest\\bin\\com\\goodtion\\sweetop\\";
public static final String fileType=".class";
public Class findClass(String name){
byte[] data=loadClassData(name);
return defineClass(name,data,0,data.length);
} private byte[] loadClassData(String name) {
FileInputStream fis=null;
byte[] data = null;
try {
fis = new FileInputStream(new File(drive+name+fileType));
ByteArrayOutputStream baos=new ByteArrayOutputStream();
int ch=0;
while((ch=fis.read())!=-1){
baos.write(ch);
}
data=baos.toByteArray();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return data;
}
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException{
FileClassLoader loader = new FileClassLoader();
Class objClass=loader.loadClass("com.goodtion.sweetop.HelloWord",true);
Object obj=objClass.newInstance();
System.out.println(objClass.getName());
System.out.println(objClass.getClassLoader().getClass().getName());
System.out.println(((HelloWord)obj).getInfo());
}
}
不行的话放在test文件夹建了一个包cn/qdrk/tax/account放AccountService.class
Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();//加载驱动
这种方法或对源代码进行反编译或放到bin(classes)文件夹中在eclipse中直接用(会提示方法名称的)。
你只拿到这一个类,并不能启动此类,因为它依赖于其他类
在accountServcice.java文件里(如果你有accountServcice.java文件的话),所有import 的上端,输入:
package XXX.XXX(路径名),比如:
package com.horstmann.corejava;
就是说在基目录的com/horsrmann/corejava下存放.class文件
(这时候accountServcice.java和accountServcice.class都必须在这个目录之下,不然会报错。)然后另一个类的头部,输入:
import com.horstmann.corejava.*;就可以引用那个类了。