有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在运行时编译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) 个答案