7

Когда я ищу приложения, использующие Spotlight, верхние записи часто являются файлами JAR. Это раздражает. Можно ли изменить Spotlight, чтобы файлы JAR не считались приложениями?

3 ответа3

7

Я хотел бы сделать то же самое, но я думаю, что ответ "это невозможно" или, по крайней мере, "было бы рискованно пытаться".

Вот что я обнаружил до сих пор.

Связать файлы JAR с каким-либо другим приложением?

Я начал с предположения, что Spotlight делает вывод, что JAR-файлы являются добрыми:application, потому что JAR-файлы по умолчанию связаны с Jar Launcher.app. Возможно, если мы сможем удалить эту связь, тогда Spotlight перестанет индексировать JAR-файлы как приложения.

Это можно сделать стандартным способом в Finder. Просмотрите файл JAR в Finder, просмотрите информацию, выберите другое приложение в разделе "Открыть с помощью", нажмите "Изменить все". Я попробовал это, и у меня не было изменений в результатах Spotlight, однако я не пытался перестроить свой индекс Spotlight.

Мне это не нравится, так как я не хочу, чтобы Archive Utility ассоциировался с файлами JAR, и у меня нет другого приложения, которое я бы предпочел связать. Это привело меня к ...

Удалить ассоциацию для файлов JAR с Jar Launcher?

В этой статье рассказывается, как удалить файловую ассоциацию. Это только отчасти правильно. Он работает для удаления ассоциации, которую вы ранее добавили вручную. Оказывается, бесполезно удалять связь, исходящую из системы. Я попробовал ссылочное приложение [RCDefaultApp] [], которое, как говорится в статье, может отключить любую связь. Оказывается, приложение просто использует обходной путь. Он "отключает" ассоциации файлов путем создания новой ассоциации с фиктивным приложением, а не путем удаления фактической ассоциации. Это ничем не отличается от создания собственного ничего не делающего приложения и связывания его с файлами .jar.

  • RCDefaultApp Связанный, есть этот ответ на вопрос, где Mac OS X хранит ассоциации файлов. Ответ с наивысшим рейтингом верен только частично. Значения по умолчанию, на которые он ссылается, являются вашими собственными "пользовательскими" дополнениями или переопределениями системных "значений по умолчанию". Опять же, самое большее, что вы могли бы сделать, это добавить альтернативную ассоциацию.

Где Jar Launcher.app связан с файлами JAR?

Некоторые из этих статей ссылаются на утилиту командной строки lsregister (часть того, как перестроить ассоциации Launch Services). Запустите это:

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Versions/Current/Support/lsregister -dump

И вы получите большой дамп конфигураций Launch Services. Включая эти соответствующие части:

bundle  id:            48
    path:          /System/Library/CoreServices/CoreTypes.bundle
    name:          CoreTypes
    identifier:    com.apple.coretypes (0x800000ff)
    ...
    --------------------------------------------------------
    type    id:            2224
        uti:           com.sun.java-archive
        description:   Java archive
        flags:         exported  active  core  apple-internal  trusted  
        icon:          
        conforms to:   public.zip-archive, public.executable
        tags:          .jar, application/java-archive
...
--------------------------------------------------------------------------------
bundle  id:            21264
    path:          /System/Library/CoreServices/Jar Launcher.app
    name:          Jar Launcher
    ...
    library items:
    ...
    --------------------------------------------------------
    claim   id:            25284
        name:          Java JAR file
        rank:          Default
        roles:         Viewer  
        flags:         apple-default  apple-internal  relative-icon-path  
        icon:          Contents/Resources/JAR.icns
        bindings:      com.sun.java-archive, .jar

Что для меня говорит о нескольких вещах:

  • Ассоциация Jar Launcher.app по умолчанию происходит из /System /Library /CoreServices /Jar Launcher.app, а не из какого-либо общесистемного файла plist или аналогичного. Там может быть возможность обезьянить там, чтобы разорвать связь. Я был бы обеспокоен, что это может быть отменено с любым обновлением программного обеспечения, которое обновляет Jar Launcher
  • Независимо от Jar Launcher, вышеприведенный бит conforms to: public.zip-archive, public.executable заставляет меня поверить, что я ошибался в связи с ассоциацией Jar Launcher, связанной с тем, как Spotlight индексирует файлы JAR. Я интерпретирую вывод как «JAR-файлы - это тип ядра, который считается архивом и приложениями»

Мне действительно неудобно ковыряться с /System/Library/CoreServices/CoreTypes.bundle, но может показаться, что именно это необходимо для изменения типа "архива Java", удалив «public.executable» из "соответствует". Я бы положил деньги на то, что именно этим и пользуется Spotlight при индексации файлов JAR и обработке их как вида: приложение.

Как разработчик Java, вы знаете, что не все файлы JAR являются приложениями. Более сложный индексатор может проверить манифест внутри JAR. Но это только исправит Spotlight. Возможно, это ошибка OS X, из-за которой Finder рассматривает все файлы JAR как приложения, позволяя вам использовать Command-O и пытаться запустить их через Jar Launcher. Не зная больше о Launch Services, это похоже на ограничение механизма, ориентированного на расширение файлов, здесь. Облом.

4

Файлы Jar часто приходят из сокращенного набора каталогов. В моем случае большинство jar-файлов находились в "/Applications/Eclipse/plugins". Итак, в «Системных настройках»> «Spotlight»> «Privacy», я только что запретил Spotlight искать в этом конкретном месте. Теперь это работает как шарм :)

0

Я думаю, что вы должны фильтровать поиск в центре внимания.

Системные настройки >> Прожектор, в результате поиска отметьте "Приложение". надеюсь, что это работает.

Я хотел бы посоветовать вам использовать окно быстрого поиска Google . это позволяет вам искать данные на вашем компьютере и в Интернете. Я думаю, что это более мощный, чем прожектор.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .