Portabilidade para Linux

11 respostas
programaçãojava
R

Boa noite, tenho uma aplicação java pronta e desenvolvida em Windows, a pouco tempo migrei para o Debian 8 por motivos de trabalho, e meu aplicativo fica desregulado para a nova plataforma linux, palavras com acento ficam com o simbolo de ¨?¨ a tela fica toda fora de forma, a posição e os tamanhos dos componentes (apesar de estarem nas especificações originais) ficam fora da posição. Se alguém tiver alguma ideia sobre como resolver isso, além de refazer tudo, eu ficaria grato.

Um adendo, estou usando eclipse como IDE.

Desde já agradeço a atenção.

11 Respostas

L

Você tá gerando o .jar no windows e abrindo com 2 clicks no linux, ou tá rodando pela IDE nos dois?

Vai no terminal do linux e digita java -version e cola aqui o que aparecer.

R

Estou rodando pelos dois, tenho o arquivo .Jar e também rodo pela IDE

É isso que aparece no meu terminal ¨java version "1.8.0_121"
Java™ SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot™ 64-Bit Server VM (build 25.121-b13, mixed mode)¨

S

Isso é devido ao character encoding, configura sua IDE para usar UTF-8 tanto no Windows quanto no Linux

Creio que não está utilizando gerenciadores de layout.

L

Nem me toquei do encoding, tens razão!

Eu achei que poderia ser um daqueles JDKs/Runtime que as vezes vem no Linux por padrão ao invés do da Oracle ou o OpenJDK.

R

E como que eu posso resolver esse problema? nunca tive que fazer isso antes, então estou meio perdido

L

Se os caracteres que estão aparecendo como ? são escritos no código, como em

label.setText("É, á, ç, ú");

você pode ir nas configurações da IDE e setar o algoritmo de character-encoding para UTF-8, e recompilar o código.

R

Mudei pra UTF-8, mas ele continua do mesmo jeito

L

Sinceramente não sei o que mais podemos alterar, porque isso nunca aconteceu comigo. Enquanto a gente espera alguém que manja aparecer, podemos ir tentando outras coisas para facilitar a resolução do problema.

Cria projeto novo, só com uma classe e um método main, e coloca um

System.out.println("É á í ú");

pra gente ver o que aparece no terminal, se sai com acento certo ou sai algo estranho como uma interrogação.

R

Mas ai que é o estranho, quando o código foi montado no linux ele sai com acentos, o problema é código feito em outro OS

L

Então, o arquivo deve estar em UTF8 quando é compilado em outro OS! O algoritmo de encoding utilizado no Windows geralmente não é UTF8 por padrão.

R

Sim, acho que pelo jeito tenho que reescrever onde tem acento, e na próxima lembrar de mudar o projeto pra UTF-8

Criado 5 de fevereiro de 2017
Ultima resposta 7 de fev. de 2017
Respostas 11
Participantes 3