как предоставить ссылку на класс, который отсутствует в Windows JRE, но присутствует в Mac JRE

1

Я разработал приложение e4, которое работает как в Mac OS X, так и в окнах

Я использую некоторые классы, которые присутствуют в mac os x jre, но они отсутствуют в windows jre

отсутствующий файл показывает ошибку, когда мы запускаем его из окна eclipse

тот же файл присутствует в mac jre, поэтому это не показывает ошибку, когда мы запускаем ее из mac eclipse

справочная библиотека -/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar (которая отсутствует в windows jre)

я хочу избавиться от ошибки в платформе Windows "eclipse"

если я добавлю библиотеку ui.jar в качестве ссылки, функциональность в mac сходит с ума и выдает исключения во время выполнения (java.lang.RuntimeException: Unimplemented)

  • 0
    Похоже, вы сделали прямую ссылку на банку для конкретной платформы. Я полагаю, что конкретный jar используется для того, чтобы Swing выглядел более «Mac Native», и поэтому, конечно, его не будет в Windows JRE.
  • 0
    как ссылаться, кроме прямой ссылки? какие-либо предложения для этого случая?
Показать ещё 1 комментарий
Теги:
macos
e4

2 ответа

1
Лучший ответ

Сначала я хочу сказать, что это очень обескураживающая вещь; Приложения Eclipse (и Java-приложения в целом) предназначены для агностики платформы; введение кода, зависящего от реализации на платформе, обычно является плохими идеями и последними средствами. Если вы можете придумать любую альтернативу, я призываю вас сделать это.

Было сказано, что...

Вы можете выделить код, который использует классы, специфичные для Mac, и поместить их в фрагмент. Фрагмент имел бы ограничения в этом манифестах, которые позволяли бы его устанавливать только в OS X. Именно так SWT обрабатывает специфические для платформы части его реализации.

Подробнее о фрагментах в справке Eclipse.

1

Поместите код Mac в плагин или фрагмент с фильтром платформы, установленным в MANIFEST.MF, чтобы он включался только в сборку Mac. Например:

Eclipse-PlatformFilter: (& (osgi.ws=cocoa) (osgi.os=macosx) (osgi.arch=x86_64) )

Указывает, что код предназначен только для 64-разрядной Mac OS X.

Вам придется организовать вызов кода в плагине только на Mac. Один из способов - также иметь только Windows-плагин с версиями Windows тех же классов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню