当我使用 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 文件关联没有什么不同。
- RC默认应用 相关,有这个答案针对这个问题Mac OS X 在哪里存储文件关联。评分最高的答案只是部分正确。它引用的默认值是您自己的“每个用户”添加或覆盖系统“默认”默认值。同样,您能做的最多就是添加一个替代关联。
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 更强大。