クライアントのインターフェイスを持っていても実装されていないクラスのオブジェクトをサーバーからクライアントに送信しようとしています。クライアントが実行時にコンパイルするクラス。 、実行時にJavaファイルをコンパイルしてClassNotFoundExceptionを使用してください。
Class.java
それをコンパイル- クライアントに送信
- は、クライアント
Class.class
ファイル
にオブジェクトを送信し、私ものコンパイルかかわらず、ここClassNotFoundException
を得たのだ。私は、これまで得たことです私はちょうどうまく動作するファイルを送信します。誰もが、自分自身の1つとして、新しくコンパイルされたクラスを受け入れるためにファイルをコンパイルした後に何をしなければならないのですか?
はコード
// 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
これはjava.lang.Classと競合する可能性があります。パッケージを使用し、デフォルトのパッケージにクラスを入れないでください。 – Patrick
@パトリック私はそれをComputeClassに変更してパッケージを設定しますが、それと同じエラーです。しかし、パッケージのリマインダのおかげで、私は長い間Javaをやりません。 – Megazero