Eu gostaria de fazer o mesmo, mas acho que a resposta é "não é possível" ou pelo menos "seria arriscado tentar".
Aqui está o que eu descobri até agora.
Associar arquivos JAR a algum outro aplicativo?
Comecei supondo que o Spotlight está inferindo que os arquivos JAR são gentis: aplicativo porque os arquivos JAR estão associados ao Jar Launcher.app por padrão. Talvez, se pudermos remover essa associação, o Spotlight pare de indexar os arquivos JAR como aplicativos.
Isso pode ser feito da maneira padrão no Finder. Visualize um arquivo JAR no Finder, visualize informações, selecione um aplicativo diferente em "Abrir com", clique em "Alterar tudo". Eu tentei isso e não tive nenhuma alteração nos resultados do Spotlight, no entanto, não tentei reconstruir meu índice do Spotlight.
Não gosto disso, pois não quero o Archive Utility associado a arquivos JAR, nem tenho outro aplicativo que prefiro associar. Isso me levou a ...
Remover associação de arquivos JAR com o Jar Launcher?
Este artigo pretende dizer-lhe como remover uma associação de arquivos . Está apenas parcialmente correto. Ele funciona para remover uma associação adicionada anteriormente manualmente. Acontece que não é bom para remover uma associação que vem do sistema. Eu tentei o aplicativo referenciado, [RCDefaultApp] [], que o artigo diz que pode desabilitar qualquer associação. Acontece que o aplicativo usa apenas um kludge / workaround. Ele "desativa" associações de arquivos criando uma nova associação a um aplicativo simulado, não removendo a associação real. Isso não é diferente de criar seu próprio aplicativo do-nothing e associá-lo a arquivos .jar.
- RCDefaultApp Relacionado, há esta resposta para a pergunta Onde o Mac OS X armazena associações de arquivos . A resposta nominal mais alta está apenas parcialmente correta. Os padrões referenciados são suas próprias adições "por usuário" ou substituições dos padrões "padrão" do sistema. Novamente, o máximo que você poderia fazer seria adicionar uma associação alternativa.
Onde está o Jar Launcher.app associado aos arquivos JAR?
Alguns desses artigos fazem referência ao utilitário de linha de comando lsregister
(parte de como reconstruir as associações dos Serviços de Lançamento). Execute isto:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Versions/Current/Support/lsregister -dump
E você obterá um grande despejo das configurações do Launch Services. Incluindo estas partes relevantes:
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
O que para mim diz algumas coisas:
- A associação padrão do Jar Launcher.app vem de / System / Library / CoreServices / Jar Launcher.app ao contrário de algum sistema arquivo plist largo ou similar. Pode ser possível brincar lá dentro para quebrar a associação. Eu ficaria preocupado que isso pudesse ser desfeito Atualização de Software que atualiza o Jar Launcher
- Independente do Jar Launcher, o bit acima de
conforms to: public.zip-archive, public.executable
leva-me a acreditar que eu estava errado sobre a associação de Jar Launcher ter nada a ver com a forma como O Spotlight indexa arquivos JAR. Eu interpreto a saída para significar "arquivos JAR são um tipo de núcleo que são considerados para ser arquivos e aplicativos "
Eu me sinto muito desconfortável /System/Library/CoreServices/CoreTypes.bundle, mas parece que é o que é necessário para alterar o tipo "arquivo Java", removendo "public.executable" de "está em conformidade com". Eu colocaria meu dinheiro que é isso que O Spotlight está sendo usado ao indexar arquivos JAR e tratá-los como tipo: aplicação.
Como desenvolvedor Java, você sabe que nem todos os arquivos JAR são aplicativos. UMA Um indexador mais sofisticado poderia examinar o manifesto dentro do JAR. Mas isso só consertaria o Spotlight. Indiscutivelmente é um bug do OS X que o Finder trata todos Arquivos JAR como aplicativos, permitindo que você os ordene e tente para executá-los via Jar Launcher. Sem saber mais sobre o Launch Services, que parece ser uma limitação do mecanismo centralizado na extensão de arquivo em trabalho aqui. Que pena.