要求一、编写的源代码包名为
cn.com.package.app.study
要求二、编写代码把HelloWorld的目标代码
(class)保存到文件系统(d:\study)中。
要求三、编写代码从文件系统(d:\study)中加载
HelloWorld目标代码,并且运行。
要求四、所有源代码不能在同一个类中,用
javac进行编译、用jar把目标代码打包
cn.com.package.app.study
要求二、编写代码把HelloWorld的目标代码
(class)保存到文件系统(d:\study)中。
要求三、编写代码从文件系统(d:\study)中加载
HelloWorld目标代码,并且运行。
要求四、所有源代码不能在同一个类中,用
javac进行编译、用jar把目标代码打包
“要求一”要是不会的话就不用做JAVA了
“要求二”文件复制,基本的IO操作。不过你的HelloWorld目标代码那里来的?指定路径还是?
“要求三”应该是classloder的操作了,这个可以好好看看,不太容易。
“要求四”中“所有源代码不能在同一个类中”是虾米意思?8懂!
还有,你不是让人家帮你写所有的代码吧?如果是的话....
自己看着办吧~~~~~~
就是用JAVA编写一段代码,把HelloWorld.CLASS保存到一个指定路径中。
然后再编写代码从路径中中加载HelloWorld目标代码,并且运行。
55555555555555555555555555555
给个提示,主要就是继承classloader就好了~
或MSN:[email protected]
那么说HelloWorld.class已经存在?在某一个目录中?只是复制到另外一个目录里面?
自己编写代码来加载helloWorld.然后自己写代码来运行HelloWorld?
文件运行.class文件必须要含有main函数,如果不是这样的话,你可以用ClassLoader类来动态加载类
文件,具体可以参考JDK
public class MyClassLoader extends ClassLoader {
protected Class findClass(String name) throws ClassNotFoundException {
// TODO Auto-generated method stub
try{
byte[] classBytes=getAllClassBytes(name);
return defineClass("cn.com.package.app.study.HelloWorld",classBytes,0,classBytes.length);
}catch(Exception e){
throw new ClassNotFoundException();
}
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
MyClassLoader loader=new MyClassLoader();
Class clazz=loader.loadClass("d:\\study\\HelloWorld.class");
Object o=clazz.newInstance();
Method m=clazz.getMethod("main",new Class[]{String[].class});
m.invoke(null,new Object[]{null});
}
byte[] getAllClassBytes(String name) throws IOException{
File f=new File(name);
FileInputStream fin=new FileInputStream(f);
byte[] classBytes=new byte[(int) f.length()];
fin.read(classBytes);
return classBytes;
}
}
"MyClassLoader.java": cannot find symbol; symbol : class IOException, location: class MyClassLoader at line 19, column 53
"MyClassLoader.java": cannot find symbol; symbol : class Method, location: class MyClassLoader at line 16, column 17
"MyClassLoader.java": cannot find symbol; symbol : class File, location: class MyClassLoader at line 20, column 17
"MyClassLoader.java": cannot find symbol; symbol : class File, location: class MyClassLoader at line 20, column 28
"MyClassLoader.java": cannot find symbol; symbol : class FileInputStream, location: class MyClassLoader at line 21, column 17
"MyClassLoader.java": cannot find symbol; symbol : class FileInputStream, location: class MyClassLoader at line 21, column 41
"MyClassLoader.java": inconvertible types; found : File.length, required: int at line 22, column 58
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
错误在这行java.lang.NoClassDefFoundError: cn/com/newpack/app/study/classes/HelloWorld(wrong name: helloworld) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:537) at java.lang.ClassLoader.defineClass(ClassLoader.java:448) at MyClassLoader.findClass(MyClassLoader.java:13) at java.lang.ClassLoader.loadClass(ClassLoader.java:289) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at MyClassLoader.main(MyClassLoader.java:21)Exception in thread "main"