Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Динамическая загрузка класса с потрохами / 7 сообщений из 7, страница 1 из 1
16.02.2018, 14:38
    #39602999
AndronovMV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая загрузка класса с потрохами
Привет!

Столкнулся с подобной проблемой.
Сразу оговорюсь - swing

Есть приложение, своего рода лаунчер. Там две кнопки, обновить и пуск.
Нажимаем обновить, закачиваются потроха.
Нажимаем пуск, потроха запускаются.

Сами потроха. То над чем ведется постоянная работа. Там формы, библиотеки, ресурсы и проч.
Потроха можно запустить и без лаунчера.

Проблема:
1. Получается что потроха запускаются не напрямую, а через другой java-класс и когда я работаю с потрохами в определенный момент вываливается исключение. Из текста исключения я понял что это происходит тогда, когда задействуется какая нибудь либа указанная в потрохах. Хотя если запускать потроха напрямую, не через лаунчер, то все норм.

2. Первую проблему частично решил, положив все либы их потрохов в папку lib/ лаунчера. Но тут опять трабл.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlObject
	at java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.util.concurrent.FutureTask.get(FutureTask.java:192)
	at javax.swing.SwingWorker.get(SwingWorker.java:602)
	at com.andronovman.ciska.threads.SqlToExcelThread.done(SqlToExcelThread.java:259)
	at com.andronovman.ciska.CisKA$51.done(CisKA.java:1623)
	at javax.swing.SwingWorker$5.run(SwingWorker.java:737)
	at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:832)
	at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
	at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:842)
	at javax.swing.Timer.fireActionPerformed(Timer.java:313)
	at javax.swing.Timer$DoPostEvent.run(Timer.java:245)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlObject
	at com.andronovman.voyager.excel.ExcelBuilder.<init>(ExcelBuilder.java:57)
	at com.andronovman.ciska.threads.SqlToExcelThread.doInBackground(SqlToExcelThread.java:240)
	at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at javax.swing.SwingWorker.run(SwingWorker.java:334)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlObject
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 8 more



Класс org/apache/xmlbeans/XmlObject находится в xmlbeans-2.6.0.jar , но бл...ть... я ее всюду уже разложил и все равно валится. Хотя, повторюсь, если запускать потроха без лаунчера, то все нормально.

Ктонить знает как вообще правильно настраивать такую схему приложения, чтоб без дублирования библиотек.
Спасибо.

P.S. Началось все с реализации выгрузки данных из БД в ехель через apache poi 3.17.
...
Рейтинг: 0 / 0
16.02.2018, 15:05
    #39603035
by-pass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая загрузка класса с потрохами
AndronovMV,

В моем старом проекте, чтобы заработало, использовался следующий набор библиотек:
poi-3.13-20150929.jar
poi-excelant-3.13-20150929.jar
poi-ooxml-3.13-20150929.jar
poi-ooxml-schemas-3.13-20150929.jar

А так проблема решается импортом проекта на maven.
...
Рейтинг: 0 / 0
16.02.2018, 15:10
    #39603041
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая загрузка класса с потрохами
Опять сплошной гуманитарий. "Потроха", "напрямую", "через лаунчер" и ни слова о том какие же технические термины за всем этим спрятаны.
Я подозреваю что при запуске "напрямую", библиотеки прописаны в манифесте "потрохов".
А при запуске "через лаунчер", тот понятия не имеет где и какие библиотеки нужны.
То что вы везде накопировали библиотеку, а это не помогло подсказывает что ланчер не использует wildcard в конфигурации classpath. Вообще, судя по описанию, реализация ланчера так себе. И это его косяк.
...
Рейтинг: 0 / 0
16.02.2018, 15:20
    #39603063
AndronovMV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая загрузка класса с потрохами
Blazkowicz,
Да все точно!

Вытекающий вопрос: как сделать так, чтобы лаунчер при запуске какбы увидел манифест "потрохов".

Или тыкните носом в нормальную реализацию лаунчера плиз. спасибо

К слову о гуманитариях - я спецом выбрал может не совсем красивые, но короткие сокращения.
...
Рейтинг: 0 / 0
16.02.2018, 15:21
    #39603065
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая загрузка класса с потрохами
AndronovMV,

Так может не стоит запускать в "потроха" в JVM ланчера? Запускайте их как независимый процесс. Тогда разницы не будет.
...
Рейтинг: 0 / 0
16.02.2018, 15:23
    #39603066
AndronovMV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая загрузка класса с потрохами
Blazkowicz,

Ща попробую. спс
...
Рейтинг: 0 / 0
16.02.2018, 16:00
    #39603136
AndronovMV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая загрузка класса с потрохами
Blazkowicz,

Блин ну вот я тупанул конечно! Спасибо!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Динамическая загрузка класса с потрохами / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]