Iniciei meus estudos em Java, comprei o Livro Java como programar edição 8. Estou com uma dificuldade em um programa simples que tem de exemplo no Livro. Vejamos:
public class Welcome4
{
// main method begins execution of Java application
public static void main( String[] args )
{
System.out.printf( "%s\n%s\n",
"Welcome to", "Java Programming!" );
} // end method main
} // end class Welcome4
Quando eu faço um run no Elipse é apresentado seguinte erro:
Exception in thread “main” java.lang.Error: Unresolved compilation problem:
The method printf(Locale, String, Object[]) in the type PrintStream is not applicable for the arguments (String, String, String)
atWelcome4.main(Welcome4.java:7)
Mas se eu usar .class que está nos aquivos de exemplos do livros o programa funciona muito bem. Tivemos alguma mudança no comando Printf para versão 8 Java? Se alguém puder esclarecer eu ficarei grato.
O código acima não tem erros. Deve ser a maneira que você está tentando executar o arquivo que está dando erro. Tente criar o arquivos .java e compilar pelo prompt de comandos e depois o execute.
L
leandroendrix
Reginildo,
eu fiz esse teste e erro persiste. Ele só funciona se eu usar o arquivo .class que vem no diretório de exemplos do livro. Observei que na mensagem de erro o compilador diz que para usar Printf você tem usar a seguinte estrutura (String, Object[]) e que eu não posso usar String, String. Eu não descobri ainda o que é Object[] mas estou pesquisando. Eu penso que deve haver alguma diferença no pacote JDK por que não é possível que livro com esse conceito esteja com código incorreto.
C
const_evolution
Se o arquivo de exemplo do livro funciona e o seu não, só pode ser problemas com a versão da jdk.
Entre no DOS (windows) ou terminal (linux) e digite:
javac -version
Se a versão que ele imprimir for diferente, você terá de informar na variável de ambiente JAVA_HOME o novo caminho da jdk 8 no caso.
dúvidas quanto à configuração de variáveis de ambiente, segue link explicando a respeito.
Espero ter ajudado.
L
leandroendrix
Cara, você está certo. O livro diz que o programas estão na versão JDK 6Update 11. Mas o que tenho na minha máquina é 1.8.0_05. Eu tenho configurado a variável de ambiente mas o que eu penso ser estranho e não funcionar no 1.8.0 versão mas recente. Vou tentar achar o que pode ter mudado para nova versão, caso eu não encontre vou instalar a versão 6 para prosseguir com os estudos.
Obrigado pela dica.
C
const_evolution
Logo imaginei porque eu também tenho esse livro e me lembrei dessa versão utilizada nos códigos de exemplo.
Estranho o seu código não rodar na nova versão, copiei seu código e compilei na versão mais recente e foi tranquilo aqui, mas fiz tudo pelo dos, interessante você ver a configuração do eclipse para saber qual versão ele está usando.
Window -> Preferences -> Java, lá verifique os itens:
Compiler
Installed JRE’s
Uma sugestão, evite usar o eclipse por enquanto, faça os exemplos compilando-os diretamente pelo DOS quando estiver mais adaptado aí sim use-o.
Espero ter ajudado.
L
leandroendrix
Cara mais uma vez você estava certo. Eu mudei a IDE agora estou usando Jcreator e código funcionou perfeitamente. Pelo visto é alguma coisa no Eclipse que eu estava usando. Eu penso que minha versão e Galileu mas não tenho certeza.
Obrigado e grande abraço.
C
const_evolution
É… realmente, Eclipse Galileu e jdk 1.8 não combinam, a versão do Eclipse para ele na minha opinião o deixa “defasado”.
Se você está usando-o apenas para estudos, acho que vale a pena baixar a última versão, assim garante compatibilidade com a jdk.