Когда я делаю многоплатформенное тестирование в Windows, это становится раздражающим, что Eclipse показывает ошибки в проекте из-за кода com.apple.eawt, что я имею в специальной пользовательской настройке Mac. Хуже все же, если я экспортирую выполнимую банку в Windows, это не будет работать на Mac из-за нерешенных проблем компиляции.
Что лучший способ состоит в том, чтобы позволить Windows Java и com.apple.eawt жить в мире? Я не вижу, как я смог бы отделить код к банке, так как он требует доступа к большому количеству состояния программы.
Я создал обновленную банку для решения этой проблемы. Источник GitHub здесь . Он размещен на maven central
Вы можете использовать подход, предпринятый в osxAdapter , «динамическая реализация [из которых] будет запущена только на платформах, которые фактически поддерживают Apple API (например, Java 1.4 или позже на Mac OS X), избегая любых проблем совместимости ». A Применение образца и самого адаптера , как указано в этой статье .
Это похоже на то, что вы после: http://developer.apple.com/ Mac / Библиотека / Samplecode / Applejavaextensions /
Это подключаемая банка классов заглушек, представляющих новое Apple EAWT и EIO API для Java 1.4 на Mac OS X. Цель этих заглушек состоит в том, чтобы обеспечить компиляцию кода EAWT или EIO-ссылок на Платформы, отличные от Mac OS X.
Поместите специальный код OS X в отдельный класс.
В основном коде используйте отражение, чтобы увидеть, присутствует ли один из классов Apple (или Class.forName), и если это так, ЗАТЕМ вызовите отдельный класс, указанный выше. Я не могу вспомнить, можете ли вы сделать это безопасно, просто вызвав его, или вам также нужно вызвать отдельный класс путем отражения.