|
|
|
Help! Java + WinServer 2008 = какая-то хрень
|
|||
|---|---|---|---|
|
#18+
Создаем библиотеку MyLib в ней пакет Pack1 и в нем класс Class1 с методом static public void func1() . Дале создаем SE-проект MyApp (наследуем от JFrame) в нем вызываем Pack1.Class1.func1(). Все просто. Под XP все работает. Под WS2008 все тоже работает. НО! Добавляем в Class1 метод func2(), вызываем из MyApp и под WS2008 получаем NoSuchMethodError (под XP по прежнему все хорошо)! Первая мысль - библиотека старая => добавляем в MyLib класс Class2 с переменной ver = номеру версии и метод getVer(), который будет ее возвращать (я знаю что это можно реализовать через manifest, но в данной ситуации этого было вполне достаточно). В MyApp проверяем версию библиотеки - все нормально (собственно само наличие Class2 уже говорит, что это новая). Ошибка по прежнему есть. Очень удивляемся. Методом научного тыка выясняем, что для решения нужно: либо переименовать класс Class1, либо перенести его в другой пакет, либо перенести метод func2() из класса Class1 в любой другой класс. По сути надо избавиться от строки : Pack1.Class1.func2() ; Еще раз удивляемся. Переименовываем Class1 в ClassХХХ => все работает. В MyApp создаем окошко, в котором с помощью рефлексии выводим информацию о загруженных классах. И что же мы видим под WS2008 (под XP все хорошо) ? Оказывается у нас сейчас есть Class1 (который мы переименовали) с методом func1() и БЕЗ метода func2() и класс ClassXXX с обоими методами!!! Вопрос: что за фигня и как с ней бороться?!! ЗЫ использовалось: Java 1.7.0_07 32-бит WS2008 SR2 разрабатывалось под WinXP SR3 NetBeans 7.1.1 Java 1.7.0_07 ЗЫЫ было предположение, что JVM как-то кэширует - удаление кэша не помогло, удаление + перезагрузка - не помогло. Удаление 32-бит JVM и замена на 64-бит - не помогло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 14:14:06 |
|
||
|
Help! Java + WinServer 2008 = какая-то хрень
|
|||
|---|---|---|---|
|
#18+
используйте Class.getProtectionDomain().getCodeSource().getLocation() чтобы увидеть откуда ваши классы были загружены. Версия Windows здесь, скорее всего, не при чем. Проблема в том как компилируется и запускается приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 14:23:29 |
|
||
|
Help! Java + WinServer 2008 = какая-то хрень
|
|||
|---|---|---|---|
|
#18+
Так как вы запускаете всё из NetBeans, то возможно это в нём какая-то бага. В одном случае он распознал что класс был изменен и перекомпилировал его. Во втором случае он не компилировал класс с новым методом а использовал тот что скомпилировал ранее. Когда вы создали новый класс ClassXXX, NetBeans без проблем распознал что его надо скомпилировать. Запустите "форсированую" перекомпиляцию всего и ошибка уйдёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 14:26:47 |
|
||
|
Help! Java + WinServer 2008 = какая-то хрень
|
|||
|---|---|---|---|
|
#18+
Спасибо помощь и, отдельное, за Location() я подумал о чем-то подобном, но раньше ни когда не делал, а быстро нарыть не получилось. По поводу NetBeans я подумал о таком раскладе и запускал приложение как из среды так и как отдельный jar-файл. Проблему я решил, но вопрос остался!!!! Собственно что оказалось: когда я описывал проблему я ее упростил. На самом деле у меня кроме моей библиотеки подключались библиотеки из LibraOffice 3.6 (java_uno.jar, juh.jar, jurt.jar, ridl.jar, unoil.jar, unoloader.jar) + библиотека MySQL. Так вот Location показал, что мои "старые" классы каким-то образом под Ws2008 попадают в библиотеку LibraOffice java_uno.jar. Заменил jar-файл - все заработало. Но Холмс - КАК?!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 14:50:04 |
|
||
|
Help! Java + WinServer 2008 = какая-то хрень
|
|||
|---|---|---|---|
|
#18+
Shut_downНо Холмс - КАК?!!! Предлагаете угать процесс сборки и деплоймента проекта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 14:53:53 |
|
||
|
Help! Java + WinServer 2008 = какая-то хрень
|
|||
|---|---|---|---|
|
#18+
BlazkowiczShut_downНо Холмс - КАК?!!! Предлагаете угать процесс сборки и деплоймента проекта? Честно говоря не понял, что Вы имели ввиду под "сборкой" если компиляция в NetBeans, то с ней я думаю все в порядке т.к. изначально (при первом запуске) он работает. "Деплоймент" я тоже не понял - я тупо копирую файлы и запускаю командой "диск:\путь\java.exe -jar MyApp.jar". Во всем этом меня интересует КАК (и зачем?) класс из моей библиотеки без моего ведома перекочевал в библиотеку LibraOffice java_uno.jar ?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 15:02:01 |
|
||
|
Help! Java + WinServer 2008 = какая-то хрень
|
|||
|---|---|---|---|
|
#18+
Shut_downВо всем этом меня интересует КАК (и зачем?) класс из моей библиотеки без моего ведома перекочевал в библиотеку LibraOffice java_uno.jar ?! Возможно, что при работе с OpenOffice SDK, используются какие-то его собственные загрузчики http://www.openoffice.org/api/docs/java/ref/com/sun/star/lib/unoloader/UnoClassLoader.html которые добавляют ваши классы в ClassLoader, но при этом не верно указывают на java_uno.jar. Вы этот jar разворачивали, проверяли что класс физически там находится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 15:06:00 |
|
||
|
Help! Java + WinServer 2008 = какая-то хрень
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Вы этот jar разворачивали, проверяли что класс физически там находится? Честно говоря даже в голову не пришло. Посмотрел через Location. Посмотрел - размер библиотеки на Ws2008 отличался от размера библиотеки у меня. Поменял библиотеку LibraOffic'a. Все заработало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 15:33:55 |
|
||
|
Help! Java + WinServer 2008 = какая-то хрень
|
|||
|---|---|---|---|
|
#18+
Shut_downЧестно говоря даже в голову не пришло. Посмотрел через Location. Посмотрел - размер библиотеки на Ws2008 отличался от размера библиотеки у меня. Поменял библиотеку LibraOffic'a. Все заработало. Возможно платформа LibreOffice и добавляет туда ваши классы. ХЗ что вы там вообще пишете. Дополнение может какое под офис? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 15:38:00 |
|
||
|
Help! Java + WinServer 2008 = какая-то хрень
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВозможно платформа LibreOffice и добавляет туда ваши классы. ХЗ что вы там вообще пишете. Дополнение может какое под офис? Вроде ни чего криминального не пишу. Обычное приложение - работа с БД + вывод информации в OpenOffice.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 17:07:42 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37991822&tid=2130803]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 273ms |
| total: | 409ms |

| 0 / 0 |
