De Outros

Mac Como modificar um arquivo java .jar?

D

Dudleybrooks

Pôster original
4 de abril de 2011
são Francisco
  • 14 de abril de 2011
Preciso fazer uma modificação simples em um aplicativo (Thunderbird.app) - alterar uma única linha em um arquivo .jar. No meu antigo computador com Windows, eu sabia qual software usar. Qual é a maneira mais fácil no Snow Leopard de abrir, modificar e salvar o arquivo .jar no aplicativo? De preferência usando coisas que estão embutidas no sistema operacional; se não, então usando freeware?

Jiminaus

16 de dezembro de 2010


Sydney
  • 15 de abril de 2011
Um arquivo .jar é apenas um arquivo .zip com uma extensão diferente (e algum layout padrão / predefinido). Você pode usar os programas zip e descompactar padrão em / usr / bin para alterar um arquivo .jar, presumindo que não esteja assinado.

'Alterar uma única linha em um arquivo .jar' não faz sentido diretamente no contexto do arquivo .jar. Se você nos disser exatamente o que deseja fazer com esse arquivo .jar, poderemos dizer quais ferramentas / programas do Mac OS X você pode usar e como. M

mufflon

15 de setembro de 2006
  • 15 de abril de 2011
Postado sem fio (Mozilla / 5.0 (iPhone; U; CPU iPhone OS 4_2_1 como Mac OS X; sv-se) AppleWebKit / 533.17.9 (KHTML, como Gecko) Versão / 5.0.2 Mobile / 8C148 Safari / 6533.18.5)

Na verdade, existem três fases: extração, modificação e montagem novamente.

Extrair é fácil: clique com o botão direito e clique em desarquivar (afaik).

Modificação: se for o manifesto (classe a ser executada e assim por diante), então é fácil, porém os arquivos java são compilados em arquivos .class e precisarão ser desmontados antes da modificação.

Para juntar tudo, google o comando 'jar' para o terminal.

Se for FOSS, é melhor e mais fácil de compilar a partir do código-fonte; senão, não acho que seja 100% legítimo. D

Dudleybrooks

Pôster original
4 de abril de 2011
são Francisco
  • 15 de abril de 2011
Preciso alterar uma linha em um arquivo .js contido no arquivo .jar. Mas sua resposta esclarece minha pergunta:

Fiz essa alteração muitas e muitas vezes no Windows (ou seja, sempre que baixei uma atualização, o que, é claro, apagou minha alteração anterior). A pessoa que recomendou a mudança também recomendou um (des) arquivador chamado IZArc, no qual todo o processo poderia ser feito de dentro do IZArc - abra (desarquive) o arquivo .jar, localize o arquivo .js, edite a linha ... e, em seguida, clicar em Sair retornaria tudo ao seu estado arquivado.

Eu entendo que posso desarquivar o .jar com qualquer desarquivador e editar o .js com qualquer editor de texto. Acho que minha preocupação é que, não sendo um programador, posso fazer algo prejudicial ao re-arquivamento - não arquivar todos os arquivos relevantes, ou arquivar muitos arquivos, ou algo assim.

Portanto, minha pergunta é: Existe um arquivador (espero que no sistema operacional) que fará tudo acima de si mesmo, para que eu saiba que o .jar final contém exatamente os arquivos que ele deve conter? Ou, na falta disso, o que preciso fazer para ter certeza de que o re-arquivei de maneira adequada? Sei que neste fórum esta é uma pergunta completa para novatos.

notjustjay

19 de setembro de 2003
Canadá, hein?
  • 15 de abril de 2011
Bem, se os arquivos .jar são simplesmente arquivos ZIP com uma extensão diferente, você pode compactar e descompactá-los livremente no Terminal usando os comandos 'zip' e 'unzip'.

chown 33

Moderador
Membro da equipe
9 de agosto de 2009
o plano abismal
  • 15 de abril de 2011
notjustjay disse: Bem, se os arquivos .jar são simplesmente arquivos ZIP com uma extensão diferente, então você pode compactar e descompactá-los livremente do Terminal usando os comandos 'zip' e 'unzip'.

Ou use o comando 'jar', que é escrito expressamente para esse propósito, e mantém a ordem correta para manifestos (que normalmente devem residir como a primeira entrada, ou no máximo uma das primeiras).

Tenho certeza de que o comando jar é instalado por padrão. Isso deve continuar a ser verdade no 10.7 Lion também.
Reações:Abronsdilan

notjustjay

19 de setembro de 2003
Canadá, hein?
  • 15 de abril de 2011
chown33 disse: Ou use o comando 'jar', que é escrito expressamente para esse propósito, e mantém a ordem correta para manifestos (que normalmente devem residir como a primeira entrada ou, no máximo, uma das primeiras).

Tenho certeza de que o comando jar é instalado por padrão. Isso deve continuar a ser verdade no 10.7 Lion também.

Ah, melhor ainda. Obrigado, não sabia disso.

pilotError

12 de abril de 2006
Ilha Longa
  • 15 de abril de 2011
Ou você pode usar o comando jar. Os parâmetros são como os utilitários zip da linha de comando

$ jar -xvf jarfile.jar ** Extrai os arquivos

** edite o arquivo **

$ jar -cvf jarfile.jar ** Crie o novo arquivo Jar
Reações:Abronsdilan D

Dudleybrooks

Pôster original
4 de abril de 2011
são Francisco
  • 15 de abril de 2011
Obrigado. O método do PilotError era direto e bem-sucedido - sem erros de software, erros de novato ou mesmo erros de piloto. Mas ainda tinha mais etapas do que eu precisava no Windows: mudar do Terminal após desarquivar, para a área de trabalho para usar um editor (minha culpa, admito, por não saber o (s) editor (es) unix aos quais presumo que o Terminal tenha acesso) e, em seguida, de volta ao Terminal para pesquisar - mais as combinações de teclas necessárias para os comandos unix. Eu ainda gostaria de encontrar um editor que faça * tudo * dentro de um programa, como o IZArc fazia no Windows: ctrl-open, edit, ctrl-close - zip-zip (trocadilho intencional)!

chown 33

Moderador
Membro da equipe
9 de agosto de 2009
o plano abismal
  • 15 de abril de 2011
dudleybrooks disse: Obrigado. O método do PilotError era direto e bem-sucedido - sem erros de software, erros de novato ou mesmo erros de piloto. Mas ainda tinha mais etapas do que eu precisava no Windows: mudar do Terminal após desarquivar, para a área de trabalho para usar um editor (minha culpa, admito, por não saber o (s) editor (es) unix aos quais presumo que o Terminal tenha acesso) e, em seguida, de volta ao Terminal para pesquisar - mais as combinações de teclas necessárias para os comandos unix. Eu ainda gostaria de encontrar um editor que faça * tudo * dentro de um programa, como o IZArc fazia no Windows: ctrl-open, edit, ctrl-close - zip-zip (trocadilho intencional)!

Não conheço nenhuma ferramenta que faça tudo. Francamente, esta é a primeira vez que vi alguém perguntar como editar um arquivo em um jar no Mac OS, então acho que não há um grande mercado-alvo.

Você pode colar linhas de comando no Terminal, então apenas salve os comandos em um arquivo de texto, copie e cole. Nenhuma digitação necessária.

Aqui está aproximadamente o que eu salvaria no arquivo de texto:
Código: jar -xvf jarfile.jar ## Extracts the files open -e path/to/fileYouWantToEdit.itsExtension jar -cvf jarfile.jar ## Create the new Jar file Obviamente, você deve alterar o jarfile.jar para o arquivo jar real que possui.

Mostrei ## porque esses são os caracteres de comentário reais do bash.

Também mostrei um comando 'open -e' com um nome de caminho que você terá que substituir. O -e aberto abrirá o arquivo nomeado em TextEdit.app. Se você tiver outro editor de sua preferência, pode dizer para 'abrir' para usá-lo. Aqui está a página do manual para o comando 'abrir':
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/open.1.html
Observe as opções -a e -b em particular.

Finalmente, você pode colocar outros comandos lá, como um 'cd someDir' ou qualquer outra coisa que você queira.

Você provavelmente poderia escrever um script 'sed' para fazer a substituição, então não teria que editar o arquivo manualmente. Em seguida, você poderia transformar tudo em um script de shell, envolvê-lo em um AppleScript e salvá-lo como uma gota. Então, no futuro, você simplesmente solta seu aplicativo original no droplet AppleScript e ele faria todas as alterações automaticamente. Você teria que escrever e depurar todas essas coisas, no entanto, e provavelmente levaria horas a mais do que apenas copiar / colar quando o aplicativo fosse atualizado.

Se a mudança no jar for algo que o fornecedor deve fornecer, você provavelmente deve enviar um relatório de bug para o aplicativo. Porque a solução mais limpa é não ter que consertar você mesmo.

pilotError

12 de abril de 2006
Ilha Longa
  • 15 de abril de 2011
No Windows, você pode usar programas como o pkzip ou winzip que mostram o conteúdo da janela e você pode apenas clicar duas vezes em um arquivo que é extraído por baixo do capô e enviado para o programa associado (editor).

Existem utilitários zip no OS X, mas admito que não uso o OS X como uso o Windows. Tenho certeza de que você poderia rastrear um dos programas que lhe permitirá fazer a mesma coisa, mas para o que era necessário aqui, não valia a pena procurá-lo. D

Dudleybrooks

Pôster original
4 de abril de 2011
são Francisco
  • 16 de abril de 2011
PilotError e Chown33: Tenho certeza de que você está certo sobre a falta de mercado no OS X.

Chown33: Obrigado pelo conselho sobre automação e os detalhes envolvidos. Vou experimentá-los. Meu Deus, posso me tornar um programador!

É algo que * eu * acho que deve ser consertado, mas não é um bug: o Thunderbird tem um recurso de Pesquisa Avançada para endereços de e-mail, que pode retornar vários endereços. Se você clicar em Gravar, eles serão colocados nos campos 'Para' (sem outra opção). A mudança faz com que sejam colocados em campos 'BCC', para melhor netiqueta. O TB 1.x costumava ter essa opção, mas a perdeu no 2.x. P

peregin55

25 de fevereiro de 2008
  • 8 de maio de 2011
Emacs fará o que você quiser

No Linux e Mac OS X eu uso emacs para editar arquivos dentro de um jar. Basta digitar:

emacs somejar.jar

Você pode então navegar por todos os arquivos no jar, abrir, salvar, o que quer que seja usando os comandos padrão do emacs. Todas as alterações feitas serão aplicadas automaticamente ao jar (não há necessidade de descompactar manualmente nada)
Reações:Abronsdilan D

Dudleybrooks

Pôster original
4 de abril de 2011
são Francisco
  • 8 de maio de 2011
Obrigado!

peregin55

É bom saber disso.

-
Dudley B

grande desastre

14 de janeiro de 2010
  • 8 de junho de 2012
argh. não funciona. Eu preciso substituir algumas strings nos arquivos .class (eu uso exatamente o mesmo número de símbolos), então tento recompactá-los com o comando jar, mas o arquivo resultante é alguns bytes menor do que o inicial, e quando eu tento instalá-lo no meu celular diz 'formato jar errado'.
Alguma ideia?

TopHatProductions115

22 de agosto de 2016
  • 10 de novembro de 2016
pilotError disse: Ou você pode usar o comando jar. Os parâmetros são como os utilitários zip da linha de comando

$ jar -xvf jarfile.jar ** Extrai os arquivos

** edite o arquivo **

$ jar -cvf jarfile.jar ** Crie o novo arquivo Jar


Isso funcionará para arquivos java assinados?

Michaelwarne

11 de novembro de 2016
  • 11 de novembro de 2016
Você pode usar o editor vim para editar os arquivos em qualquer arquivo de texto compactado.
  1. Navegue até o local do arquivo do terminal.
  2. Digite vim name.jar
  3. Selecione o arquivo que deseja alterar e pressione Enter
  4. Edite o arquivo e pressione Esc e: wq! para salvar e sair.
Espero que isto ajude.

okieiam

17 de dezembro de 2016
  • 18 de dezembro de 2016
sim eu também, eu costumava usar 7zip para editar o classpath no arquivo jar no Windows J

Jtara

23 de abril de 2009
  • 21 de dezembro de 2016
Se você precisar modificar o thunderbird.app, use o código-fonte, faça sua alteração e crie-o.

https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions C

Clovr

13 de novembro de 2018
  • 13 de novembro de 2018
michaelwarne disse: Você pode usar o editor vim para editar os arquivos em qualquer arquivo de texto compactado.
  1. Navegue até o local do arquivo do terminal.
  2. Digite vim name.jar
  3. Selecione o arquivo que deseja alterar e pressione Enter
  4. Edite o arquivo e pressione Esc e: wq! para salvar e sair.
Espero que isto ajude.
não podemos automatizar isso usando um bash? seria muito útil se você se iluminar por meio dele.
Reações:Abronsdilan