是否可以从 Spotlight 的应用程序列表中删除 JAR 文件?

Jay*_*mel 8 spotlight macos

当我使用 Spotlight 寻找应用程序时,最重要的条目通常是 JAR 文件。这很烦人。是否可以更改 Spotlight 以使 JAR 文件不被视为应用程序?

too*_*r74 8

我想做同样的事情,但我认为答案是“这是不可能的”,或者至少“尝试会有风险”。

这是我迄今为止发现的。

将 JAR 文件关联到其他应用程序?

我首先假设 Spotlight 推断 JAR 文件是 kind:application 因为 JAR 文件默认与 Jar Launcher.app 相关联。也许如果我们可以删除该关联,那么 Spotlight 将停止将 JAR 文件索引为应用程序。

这可以在 Finder 中以标准方式完成。在 Finder 中查看 JAR 文件,查看信息,在“打开方式”下选择不同的应用程序,单击“全部更改”。我尝试了这个并且 Spotlight 结果没有变化,但是我没有尝试重建我的 Spotlight 索引。

我不喜欢这样,因为我不希望存档实用程序与 JAR 文件关联,我也不想关联其他应用程序。这导致我...

删除 JAR 文件与 Jar Launcher 的关联?

本文旨在告诉您如何删除文件关联。这只是部分正确。它可以删除您之前手动添加的关联。事实证明,删除来自系统的关联并不好。我尝试了引用的应用程序 [RCDefaultApp][],文章称它可以禁用任何关联。事实证明,该应用程序只是使用了一个 kludge/解决方法。它通过创建与虚拟应用程序的新关联而不是删除实际关联来“禁用”文件关联。这与创建您自己的什么都不做的应用程序并将其与 .jar 文件相关联没有什么不同。

Jar Launcher.app 与 JAR 文件关联在哪里?

其中一些文章引用了lsregister命令行实用程序(如何重建启动服务关联的一部分)。运行这个:

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Versions/Current/Support/lsregister -dump
Run Code Online (Sandbox Code Playgroud)

您将获得大量 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
Run Code Online (Sandbox Code Playgroud)

这对我来说说了几件事:

  • 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 文件并将它们视为 kind:application 时使用的。

作为 Java 开发人员,您知道并非所有 JAR 文件都是应用程序。更复杂的索引器可以检查 JAR 中的清单。但这只会修复 Spotlight。可以说这是一个 OS X 错误,Finder 将所有 JAR 文件视为应用程序,允许您对它们进行 Command-O 并尝试通过 Jar Launcher 运行它们。在不了解 Launch Services 的更多信息的情况下,这似乎是此处工作的以文件扩展名为中心的机制的限制。无赖。


Ye *_*ung 0

我认为你必须在聚光灯下过滤搜索。

系统偏好设置>> Spotlight,在搜索结果中,删除“应用程序”标记。希望这有效。

我恳请建议使用Google 快速搜索框 。它允许您在计算机上和网络上搜索数据。我认为它比聚光灯更强大。