Java: почему код, упакованный в jar-файл, препятствует доступу внешних классов?
===============================================================================

У меня есть система плагинов для моего приложения Java. Я вызываю внешний класс с загрузчиком классов URL. Эта часть работает хорошо, как когда мое приложение запускается как файлы классов, так и когда мое приложение находится в форме JAR. Проблема, с которой я сталкиваюсь, заключается в том, что файлы плагинов могут выполнять собственный независимый код, но они создают JPanel. Когда я пытаюсь добавить этот JPanel к JPanel, который находится в основном классе приложения, я получаю исключение нулевого указателя, ссылающееся на основной класс. (com.cpcookieman.app.Main) Но этого не произойдет, если я запускаю файлы классов для приложения, только когда оно упаковано. Как я могу решить это?

Почему мой код, упакованный в файл jar, не позволяет внешним классам получать доступ к классам внутри jar?

РЕДАКТИРОВАТЬ: По запросу, трассировки стека.

РЕДАКТИРОВАТЬ 2: код загрузки класса

Плагин загружается с использованием его конструктора и создает панель для добавления к фрейму, который находится внутри одного из классов в файле JAR. JAR является основным приложением, если кто-то запутался в этом.

Я действительно не знаю структуру вашего проекта, хотя я сделал небольшой пример кода, чтобы вы могли на него взглянуть.

Учтите, что мой проект размещен на`C:\Mine\JAVA\J2SE\src\testingjar>`

Внутри этого моя структура каталогов выглядит следующим образом:

Мой класс, который станет частью файла .jar, приведен ниже:

**I compiled this class with the following command :** 

**Now Creating Manifest File for the JAR File, the contents of which are as follows :** 

**Do remember the space between colons (:) and the package name i.e. test, and after CustomPanel, Press Enter and save the file.** 

Теперь для создания файла JAR с именем`test.jar`Я написал эти команды:

**Now the class that will use this .jar file will be like this :** 

**I compiled this by writing these commands :**

**Now to run I wrote these commands :** 

**OUTPUT** 

![JAR IMPLEMENTATION](/imgs/HqGzS.jpg)

Сопоставьте шаги, может быть, вы что-то упустили, так как это хорошо работает на моей стороне.

**LATEST EDIT : As asked, I did that the other way around, now `JFrame` is inside the .jar file and `JPanel` is using it.**

Класс, который станет частью файла .jar, выглядит следующим образом:

**Contents of the manifest.txt file, will change as follows :** 

И класс, который будет использовать CustomFrame Class из файла .jar, выглядит следующим образом:

Последовательность компиляции очень похожа на предыдущую:

Все тот же вывод я получаю.

**LATEST EDIT :**

Я только что узнал, что иногда эта вещь работает, а не позже, при использовании JAR-файлов, вы должны указать путь к классу, включая оператор точки`.`, лайк

Это когда я принес`actualtest` `package` внутри`testingjar` Папка, то вышеупомянутая команда работала для этой ситуации.