我必須在學校的作業中寫一個.jar class loader
。我在另一個問題中發現了這個代碼,但不知道爲什麼它不會工作。Java URLClassLoader ClassNotFoundException
我已經設置了路徑爲絕對路徑,以確保它引用了正確的文件。
System.out.println("Loading game: " + name);
URL url = new URL("file:///home/<name>/Documents/School/thema2.3/batavus/batavus/gamemodules/TicTacToe.jar");
ClassLoader loader = new URLClassLoader(new URL[]{url});
Class<?> clazz = loader.loadClass("spatboard.game." + name);
Class<? extends Game> boardClass = clazz.asSubclass(Game.class);
Constructor<? extends Game> ctor = boardClass.getConstructor();
return ctor.newInstance(board);
我得到的錯誤是:
Loading game: TicTacToe
java.lang.ClassNotFoundException: spatboard.game.TicTacToe
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at spatbord.loader.GameLoader.loadModule(GameLoader.java:29)
at spatbord.model.Board.<init>(Board.java:51)
at spatbord.controller.GameController.onMatchStarted(GameController.java:157)
at spatbord.connection.Server.matchStarted(Server.java:428)
at spatbord.connection.Server.handleInput(Server.java:346)
at spatbord.connection.Server.run(Server.java:145)
at java.lang.Thread.run(Thread.java:745)
在TicTacToe
包聲明是package spatbord.game;
罐的內容是:
spatbord
-> game
-> TicTacToe.class
是什麼我不在這裏看到?
jar tf命令查看您的jar內容並更新您的問題結果 – eliasah
'spatboard.game.TicTacToe'有一個錯誤的地方.. – ryekayo
change'loader.loadClass(「spatboard.game。」+ name); 'to loader.loadClass(「spatbord.game。」+ name);' – Jimmy