ClassNotFoundException: класс существует в JAR, но исключение все еще выброшено - PullRequest
0 голосов
/ 14 апреля 2020

Я создал JAR-файл, используя инструмент сборки Ant. JAR создан успешно без ошибок компиляции. Когда я запускаю файл JAR, я получаю следующее исключение:

Caused by: java.lang.ClassNotFoundException: leader.Player
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.rmi.server.LoaderHandler$Loader.loadClass(LoaderHandler.java:1207)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at sun.rmi.server.LoaderHandler.loadClassForName(LoaderHandler.java:1221)
    at sun.rmi.server.LoaderHandler.loadProxyInterfaces(LoaderHandler.java:731)
    at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:674)
    at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:611)
    at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:646)
    at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:311)
    at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:265)
    at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1795)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1743)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2037)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1568)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:428)
    at sun.rmi.registry.RegistryImpl_Skel.dispatch(RegistryImpl_Skel.java:135)
    ... 14 more

Я использовал следующую команду для запуска JAR: java -jar Group6Leader.jar

Это структура моего проекта:

project/
├── Group6Leader.jar
├── build
├── src
   ├── MANIFEST.MF
   └── leader
       ├── Group6Leader.java
       ├── Platform.java
       ├── Player.java
       ├── PlayerImpl.java
       ├── PlayerType.java
       ├── Record.java
       └── strategy
           ├── LinearRegressionStrategy.java
           ├── RecursiveLeastSquareStrategy.java
           └── Strategy.java

Все файлы java имеют правильное имя пакета в верхней части файла. Все классы были созданы мной, и ни один из них не зависит от внешних JAR-файлов.

MANIFEST.MF:

Main-Class: leader.Group6Leader

Не могу понять, почему выдается ошибка ClassNotFoundException: leader.Player. Все скомпилированные классы присутствуют в файле JAR (см. Встроенный скриншот). Структура файла JAR .

Я попытался добавить аргументы Class-Path, которые указывают на сам JAR, и это не решило проблему.

Чего мне не хватает?

...