Собственно такая проблема. Нужно обратиться из класса, расположенного в пакете, к классу, расположенному в default package. Переместить свой класс из пакета в default package возможности нет, т.к. на него ссылаются другие классы (а они скомпилены и их много).
=сначала спроси у GPT=
Re: Как обратиться к классу, который в default package?
Здравствуйте, 0K, Вы писали:
0K>Собственно такая проблема. Нужно обратиться из класса, расположенного в пакете, к классу, расположенному в default package. Переместить свой класс из пакета в default package возможности нет, т.к. на него ссылаются другие классы (а они скомпилены и их много).
Столкнулся как-то и я над с проблемой, достался древний jarник для версии 1.4 и младше.
Не смог найти решения кроме как в default package создавать класс с статик полями, делегирующими методами и все равно получалось криво, неудобно и не решало полностью проблемы.
Гуглил, думал... может пересобрать как-то в байткоде...
В итоге, декомпильнул джарник, вник в код, алгоритмы, и написал свое. Повезло что небольшой был (работа с сервером древней доsql, древовидной БД в нем была)
Самому интересно, может плохо искал/думал?...
Re[2]: Как обратиться к классу, который в default package?
Здравствуйте, Skynin, Вы писали:
S>В итоге, декомпильнул джарник, вник в код, алгоритмы, и написал свое. Повезло что небольшой был (работа с сервером древней доsql, древовидной БД в нем была)
У меня та-же самая проблема. Ковыряю библиотеку Cyberplat. Эти суки накой-то хрен засекретили свой алгоритм подписи. Идиоты! Ну кто алгоритмы секретит? Все равно злоумышленник их алгоритм расковыряет, а честным людям создадут. Ну дол"""бы что можно сказать. Уже столько времени потратил на их пикантропские мозги.
Самое главное на сайте демонстрационно открыли исходный код своей программы. А вот библиотеку для подписи, видителя "сами понимате, что мы не можем открыть модули, завязанные на безопасность". Я не понимаю такого идиотизма крайней степени.
=сначала спроси у GPT=
Re[3]: Как обратиться к классу, который в default package?
Здравствуйте, C0s, Вы писали:
C0s>default package предназначен для программ уровня helloworlrd, обращения к нему из нормальных пакетов не предусмотрены.
Чем с успехом пользуются нехорошие люди, для трепания мне нервов.
=сначала спроси у GPT=
Re[3]: Как обратиться к классу, который в default package?
Здравствуйте, 0K, Вы писали:
0K>Здравствуйте, C0s, Вы писали:
C0s>>default package предназначен для программ уровня helloworlrd, обращения к нему из нормальных пакетов не предусмотрены.
0K>Чем с успехом пользуются нехорошие люди, для трепания мне нервов.
в библиотеке Cyberplat, вроде, все немногочисленные классы в пакете org.CyberPlat.
Re[4]: Как обратиться к классу, который в default package?
Здравствуйте, Falsehood, Вы писали:
F>в библиотеке Cyberplat, вроде, все немногочисленные классы в пакете org.CyberPlat.
Вы про какую библиотеку? Я про их мобильное приложение... В последней версии только один класс в пакете src, все остальные в корне. Но на web.archive.org нашел ссылку на самую первую версию, там все намного проще.
А вы про какую библиотеку? Если про приложение, то какая у вас версия?
=сначала спроси у GPT=
Re[5]: Как обратиться к классу, который в default package?
Здравствуйте, 0K, Вы писали:
0K>Здравствуйте, Falsehood, Вы писали:
F>>в библиотеке Cyberplat, вроде, все немногочисленные классы в пакете org.CyberPlat.
0K>Вы про какую библиотеку? Я про их мобильное приложение... В последней версии только один класс в пакете src, все остальные в корне. Но на web.archive.org нашел ссылку на самую первую версию, там все намного проще.
0K>А вы про какую библиотеку? Если про приложение, то какая у вас версия?
я — про библиотеку IPriv. версию узнать проблематично: ни в одном документе она не указана. наверное, она-таки не для мобильных устройств.
Re[6]: Как обратиться к классу, который в default package?
Здравствуйте, Falsehood, Вы писали:
F>я — про библиотеку IPriv. версию узнать проблематично: ни в одном документе она не указана. наверное, она-таки не для мобильных устройств.
Это обертка над ddl-кой jnipriv.dll чтоль? Вот это уродство: jnipriv.jar
Мне это их гавно не нужно, я люблю криптографию в чистом виде с открытым кодом. Они зачем-то код закрыли. Зачем? Пользователям проблемы создать.
Я уже расковырял публичный ключ и расшифровал приватный. С приватным, правда, еще не до конца разобрался, но надеюсь разобраться.
Зачем они пользователям голову морочат? Кому нужно -- расковыряет, не полениться. А вот пользователям одни проблемы -- столько времени на чепуху ушло...
Вам, кстати, не нужна их криптография на Java в исходных кодах? Реверснул их мобильное приложение, исправил ошибки реверса -- все компилируются. Но там такой бардак -- сейчас разбираюсь где там что. Смог публичный ключ выковырять -- там не нсложно. И даже расшифровал приватный, но с ним еще не все ясно.
Хотите помочь?
=сначала спроси у GPT=
Re[7]: Как обратиться к классу, который в default package?
а я добрался ответить только сейчас.
если столкнёшься ещё с тем же — можно попробовать поиграть с байтами опираясь на два факта:
1) если бы существовал MyInterface с нужным методом в именованном пакете, а нужный тебе класс implements MyInterface,
то закастить к интерфейсу или Class.forName(нужный класс).asSubclass(MyInterface.class).newInstance(); без проблем.
2) до javac 1.4, это("достучаться" до unnamed package) было можно, т.е. нужно просто найти jdk 1.3 и скомпилить класс-wrapper этим jdk
к примеру, вот такой алгоритм скорее всего прокатит, если таки нет jdk1.3 :
0) добавить MyInterface c нужным методом в именованный package
1) добавить asm-ом, ну или jassist-ом "implement MyInterface" в нужный класс (в unnamed package-е).
2) вытаскивать в именованном пакете класс Class.forName(нужный класс).asSubclass(MyInterface.class).newInstance();
или кастовать к интерфейсу, если приходит ссылка на Object.
дисклеймер: вероятно, сложность однократной расшифровки алгоритма иногда проще )
Re[7]: Как обратиться к классу, который в default package?
Здравствуйте, 0K, Вы писали: 0K>Я уже расковырял публичный ключ и расшифровал приватный. С приватным, правда, еще не до конца разобрался, но надеюсь разобраться.
Ммм, вы теперь можете от имени киберплата (или что там) слать квитанции о мнимых оплатах?
Здравствуйте, LeonidV, Вы писали:
0K>>Я уже расковырял публичный ключ и расшифровал приватный. С приватным, правда, еще не до конца разобрался, но надеюсь разобраться. LV>Ммм, вы теперь можете от имени киберплата (или что там) слать квитанции о мнимых оплатах?
Нет, конечно. Просто могу не использовать их dll-ину -- все на чистой Java (в Google App Engine нет возможности их dll подключить). Вообще не понятно зачем они алгоритм засекретили.