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

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

当我使用 Spotlight 查找应用程序时,顶部条目通常都是 JAR 文件。这很烦人。是否可以更改 Spotlight,使 JAR 文件不被视为应用程序?

答案1

我也想这么做,但我认为答案是“不可能”或者至少“尝试会有风险”。

以下是我目前发现的。

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

我首先假设 Spotlight 推断 JAR 文件属于 kind:application,因为 JAR 文件默认与 Jar Launcher.app 关联。如果我们可以删除该关联,那么 Spotlight 可能就不会再将 JAR 文件作为应用程序进行索引。

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

我不喜欢这样,因为我不想让 Archive Utility 与 JAR 文件关联,也没有其他应用程序想要关联。这让我想到...

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

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

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

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

/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 文件并将其视为 kind:application 时就是使用的。

作为一名 Java 开发人员,您知道并非所有 JAR 文件都是应用程序。更复杂的索引器可以检查 JAR 中的清单。但这只能修复 Spotlight。可以说,Finder 将所有 JAR 文件视为应用程序,允许您使用 Command-O 并尝试通过 Jar Launcher 运行它们,这是一个 OS X 错误。如果不了解有关启动服务的更多信息,这似乎是此处工作的文件扩展名中心机制的限制。真糟糕。

答案2

Jar 文件通常来自一组精简的目录。就我而言,大多数 jar 文件位于“/Applications/Eclipse/plugins”中。因此,在“系统偏好设置”>“Spotlight”>“隐私”中,我刚刚阻止 Spotlight 搜索此特定位置。现在,它运行得很好 :)

答案3

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

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

我建议使用Google 快速搜索框 。它允许你在电脑和网络上搜索数据。我认为它比 Spotlight 更强大。

相关内容