在运行时编译java文件并使用它获得ClassNotFoundException
因此,我试图将一个类的对象从服务器发送到客户机,该类的客户机有接口,但还没有实现,以及该类的实现,以便客户机在运行时编译。到目前为止,我得到的是:
- 正在向客户端发送
Class.java
- 编译了它,得到了
Class.class
文件 - 向客户端发送对象
我在这里得到了ClassNotFoundException
,尽管我刚刚发送的文件的编译工作还不错。有人知道在编译完文件后,我还需要做些什么才能让客户机接受新编译的类作为自己的类吗
至于代码
// sending file over via socket and saved it as Class.java
String fileName = "C:\\Users\\A\\workspace\\Project\\src\\Class.java";
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int result = compiler.run(null, null, null, fileName);
if(result == 0) {
System.out.println("compiler success"); // just to check if the compiler is fine
}
URLClassLoader classLoader = new URLClassLoader(new URL[]{new File("C:\\Users\\A\\workspace\\Project\\src").toURI().toURL()});
Class<?> loadedClass = classLoader.loadClass("Class");
ObjectInputStream is = new ObjectInputStream(socket.getInputStream());
Object returnObj = loadedClass.cast(is.readObject()); // got ERROR: Exception in thread "main" java.lang.ClassNotFoundException: Class
共 (0) 个答案