2015-04-07 3 views
0

У меня есть приложение Java, которое содержит папку с именем «Loadedstrategies» в каталоге bin. Эта папка содержит некоторые файлы jar, которые я загружаю динамически. Приложение отлично работает при запуске из eclipse, но когда я конвертирую свое приложение в файл jar и запускаю файл jar, тогда генерируется исключение нулевого указателя. Нулевое исключение указателя брошено следующего заявлениеЗагрузка динамического класса: Почему исключение Null pointer

URL url=(ClassLoader.getSystemResource("Loadedstrategies")); 

я напечатал значение URL, который является нуль т.е. выше заявления не принимает URL.

Я сохраняю файл jar на пути bin/Loadedstrategies. Мое приложение загружает файлы jar из bin/Loadedstrategies правильно из eclipse с помощью вышеприведенного оператора, но не тогда, когда я конвертирую приложение в jar. Пожалуйста, помогите мне

+0

пожалуйста, попробуйте с полным именем, а не только имя класса. –

+0

При экспорте в Eclipse вы можете изменить 'Обработка библиотеки'. Там вы можете выбрать, будут ли библиотеки импортированы в файл .jar, или если библиотеки будут включены извне. Возможно, вам нужно поиграть с этим, чтобы получить .jar для работы – Loki

+0

Вы пытаетесь загрузить банки из другой банки? Ваш вопрос не очень ясен. –

ответ

0

Недавно я нужно что-то вроде этого и сделал следующее:

URL myurl = new URL("file://" + PATH_TO_YOUR_JAR); 
URLClassLoader classloader = URLClassLoader.newInstance(new URL[]{myurl}); 
Class<MY_INTERFACE> myclass = = (Class<MY_INTERFACE>) classloader.loadClass(NAME_OF_YOUR_CLASS); 
MY_INTERFACE myinst = myclass.newInstance(); 

P.S. «file: //» для linux, для Windows попробуйте использовать «file: ///», вы можете проверить os с помощью System.getProperty («os.name»)

+0

Как я уже упоминал, я предоставляю свое приложение как исполняемый файл jar, и мой клиент может хранить этот файл jar по любому пути, который мне неизвестен, поэтому полный путь к моей динамически загружаемой банке неизвестен. Единственное, что известно, это то, что исполняемый файл jar моего приложения содержит папку с именем Loadedstrategies, которая содержит файлы jar, которые мне нужно загружать динамически. Скажите, как указать путь к папке Loadedstrategies. –

+0

это как раз и моя ситуация ... путь к банке может быть приведен в качестве аргумента для вашего приложения или метода вашего приложения ... попробуйте ... он работает! – dtrihinas

+0

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

0

Насколько я понимаю, у вас есть следующая организация:

application jar 
|_ bin 
| |_ Loadedstrategies 
|_ src 
... 

Если так использовать:

URL url = ClassLoader.getSystemResource("bin/Loadedstrategies"); 
+0

Loadedstrategies - это папка, содержащая файлы jar, которые мне нужно загрузить и запускать динамически загруженные стратегии, не является файлом jar. любезно поймите мою настоящую проблему. Моя проблема заключается в том, как указать путь к папке с именем loadedstrategies, в которой содержатся мои файлы динамических jar. Загружаемые стратегии - это папка в файле jar-файлов приложений. Я хочу динамически читать путь к папке loadedstrategies. –

+0

В моем ответе я не сказал что Loadedstrategies - это jar-файл. Я только что описал два способа получить путь к папке Loadedstrategies. – Ekans

+0

Извините, я пропустил, что Loadedstrategies находится в вашем приложении jar. Я обновляю свой ответ. – Ekans

Смежные вопросы