JDT (Java Development Tools) - Notas Sobre o Release

1.0 Introdução
2.0 Problemas e Limitações Conhecidos
    2.1 Executando Programas Java com Caracteres Não-Latin-1 nos Nomes de Pacotes ou de Classes
    2.2 Atributos de Depuração Ausentes
    2.3 Definindo Pontos de Interrupção
    2.4 Utilizando a Substituição de Código Automática
    2.5 Bloco de Rascunho
    2.6 Depurando Através de Conexões Lentas
    2.7 Atualização de Valores Inspecionados
    2.8 Avançando sobre Métodos Nativos que Executam E/S
    2.9 Pesquisando Referências de Campo Constantes
    2.10 Unidades de Compilação Java Fora do Caminho da Classe de Construção
    2.11 Ações para Modificar Arquivos Somente Leitura
    2.12 Gabaritos de Código Java
    2.13 Organizar Importação e Importações a partir de Pacotes Padrão
    2.14 Incluir Ação de Javadoc nos Campos
    2.15 Ajuda Instantânea de Javadoc no Editor Java
    2.16 Código HTML > Exibido na Nova Classe Java no Lugar de >
    2.17 Problema na Abertura do Editor de Arquivos de Classe
    2.18 Impossível Executar ou Depurar Classe em um Projeto com Caracteres GB18030 no Nome do Projeto
    2.19 Impossível Depurar Estouros de Pilha
    2.20 Limitação da Avaliação   
    2.21 Pontos de Interrupção Fora do Caminho da Classe de Construção   
    2.22 Correção Rápida e Importações de Pacotes Padrão   
    2.23 Recortar, Copiar e Colar Não Funcionam para Recursos Vinculados em Exibições que Mostram Elementos Java
    2.24 Conjuntos de Trabalho Java Não Funcionam Corretamente para Elementos do Contêiner da Biblioteca do Sistema JRE   
    2.25 Impossível Gerar Javadoc para Pacotes com Caracteres GB18030 no Nome
    2.26 A Edição Vinculada Não Funciona Corretamente no Modo Sobrescrever
    2.27 O Gabarito de Geração de Código do Bloco de Captura Deve Finalizar com Nova Linha se a Última for Linha de Comentário
   

1.0 Introdução

Este tópico contém informações sobre problemas e limitações conhecidos com o Java Development Tools.

2.0 Problemas e Limitações Conhecidos

2.1 Executando Programas Java com Caracteres Não-Latin-1 nos Nomes de Pacotes ou de Classes

Você pode receber um java.lang.NoClassDefFoundError ao executar programas Java com caracteres não-Latin nos nomes de pacotes ou de classes. Como solução alternativa, compacte os arquivos de classe como um arquivo JAR e execute o programa fora do JAR e não diretamente do sistema de arquivos.  

2.2 Atributos de Depuração Ausentes

O depurador requer que os arquivos de classe sejam compilados com atributos de depuração para que seja possível exibir informações de número de linha e de variáveis locais. Muitas vezes, as bibliotecas de classe (por exemplo, rt.jar) são compiladas sem atributos de depuração completos e, portanto, as variáveis locais e os argumentos de método para essas classes não ficam visíveis no depurador.

2.3 Definindo Pontos de Interrupção

Geralmente, o depurador não permite que você coloque pontos de interrupção em linhas de código que não sejam executáveis (comentários, linhas em branco e assim por diante). Contudo, existem alguns casos nos quais o depurador permitirá pontos de interrupção em linhas de códigos que não sejam executáveis. Por exemplo, o depurador permitirá que um ponto de interrupção seja colocado em uma declaração de variável que não contenha um inicializador. Observe que os pontos de interrupção ativados que são instalados com êxito em uma linha executável de uma VM em execução (depurável) são exibidos com um visto. Os pontos de interrupção que são exibidos sem um visto não são instalados em uma VM em execução (depurável).

2.4 Utilizando a Substituição de Código Automática

A substituição de código automática é suportada em VMs do JDK 1.4.x e em VMs do IBM J9. A substituição de código automática é limitada a alterações que não afetam a forma de uma classe. Ou seja, as alterações dentro de métodos existentes são suportadas, mas a inclusão ou remoção de membros não é suportada.

A escalada e a substituição de código automático em VMs do JDK 1.4.0 não são confiáveis.  

2.5 Bloco de Rascunho

Não há suporte para definição de um ponto de interrupção dentro de uma página do bloco de rascunho.

Quando o código é executado no bloco de rascunho que, direta ou indiretamente, chama o System.exit(int), a avaliação não pode ser concluída e resultará em um rastreio de pilha para um com.sun.jdi.VMDisconnectedException que esteja sendo exibido no editor de bloco de rascunho.

Finalizar uma página do bloco de rascunho enquanto está executando uma avaliação resulta na exibição de um com.sun.jdi.VMDisconnectedException no editor de bloco de rascunho.

2.6 Depurando Através de Conexões Lentas

Uma preferência global de depuração Java especifica o tempo limite do depurador, que é o período de tempo máximo que o depurador aguarda por uma resposta da VM de destino, depois de fazer uma solicitação dessa VM. Conexões lentas podem necessitar de um aumento nesse valor. O valor de tempo limite pode ser editado a partir da página de preferências Java > Depurar. A alteração do valor de tempo limite afeta apenas a VM lançada subseqüentemente, não as VMs já em execução.

2.7 Atualização de Valores Inspecionados

Ao inspecionar o resultado de uma expressão avaliada no depurador, é importante observar que o resultado exibido será o resultado dessa expressão no momento da avaliação. Por exemplo, ao inspecionar um contador de inteiros simples (tipo de dados primitivo), o valor apresentado na exibição Expressões é o valor de quando a expressão foi avaliada. Conforme o contador é alterado no programa em execução, o resultado inspecionado não é alterado (uma vez que a exibição não está mostrando o valor ligado a uma variável - ela está exibindo o valor de uma expressão e o valor de um tipo de dados primitivo não pode ser alterado). Contudo, se uma expressão resultar em um objeto, os campos desse objeto serão atualizados no inspetor conforme eles forem alterados na execução do programa (uma vez que o limite de valor para os campos em um objeto pode ser alterado).

2.8 Avançando sobre Métodos Nativos que Executam E/S

Quando o depurador avança sobre métodos nativos que executam a E/S para System.out ou System.err, a saída pode não aparecer imediatamente, a menos que o método nativo execute uma limpeza no buffer de saída.

2.9 Pesquisando Referências de Campo Constantes

A pesquisa não procura referências a campos de constante dentro de binários porque a Especificação da Linguagem Java determina que os valores de campos de constante estejam em linha nos códigos de bytes do arquivo de classe, não deixando rastro de uma referência de campo.

2.10 Unidades de Compilação Java Fora do Caminho da Classe de Construção

Quando uma unidade de compilação com problemas de compilação é movida para fora do caminho da classe de construção Java, ela retém seus problemas do Java para sempre (sua lista de problemas de compilação não é atualizada porque nunca será compilada novamente). A renomeação de um arquivo *.java para um outro com um sufixo de extensão de arquivo diferente causa o mesmo problema.  

2.11 Ações para Modificar Arquivos Somente Leitura

As ações no menu Source (por ex., Generate Getter e Setter) são sempre desativadas quando o arquivo é somente leitura. Isso ocorre atualmente mesmo quando o provedor de repositório suporta o registro automático de saída dos arquivos na modificação.

2.12 Gabaritos de Código Java

Você não pode utilizar ${CURSOR} dentro de um comentário em um gabarito de código Java (Window > Preferences > Java > Templates). 

2.13 Organizar Importação e Importações a partir de Pacotes Padrão

Organizar a importação não trata das importações de pacotes padrão. Observe que a importação de um pacote padrão não é mais suportada no JDK 1.4. 

2.14 Incluir Ação de Javadoc nos Campos

A ação Add Javadoc não funciona para campos.

2.15 Ajuda Instantânea de Javadoc no Editor Java

A ajuda instantânea de Javadoc mostrada ao passar sobre os identificadores no editor Java não trata dos links dentro de comentários Javadoc apropriadamente. 

2.16 Código HTML > Exibido na Nova Classe Java no Lugar de >

Quando você cria uma nova classe Java, o comentário gerado informa:

Para alterar o gabarito desse arquivo gerado, vá para Windows > Preferences > Java > Code Generation > Code and Comments.

O código HTML do sinal maior que (>) está sendo utilizado no lugar do próprio sinal. O comentário deve informar:

Para alterar o gabarito desse arquivo gerado, vá para Windows > Preferences > Java > Code Generation > Code and Comments.

2.17 Problema na Abertura do Editor de Arquivos de Classe

Se a preferência "Use classpath containers" tiver sido ativada na página de preferência Plug-in Development > Java Build Path Control, talvez não seja possível abrir um editor de arquivos de classe de um arquivo de classe contido em um JAR no contêiner "Required plug-in entries". Uma solução alternativa para o problema seria expandir o arquivo de classe no Packages Explorer; ele exibiria a estrutura do arquivo de classe do mesmo modo que o editor. Se o zip de um código fonte estiver disponível para o JAR, outra opção será anexar a origem ao arquivo JAR.

Para anexar a origem a um arquivo JAR no contêiner "Required plug-in entries", siga estas etapas:

  1. No Package Explorer, selecione o projeto e abra Project > Properties no menu de contexto
  2. Selecione a página Java Build Path
  3. Vá para a página Libraries
  4. Expanda o item "Required plug-in entries"
  5. Expanda o item do JAR
  6. Selecione Source Attachment e clique em Edit.
  7. Insira a localização do zip de origem correspondente.
  8. Clique em OK para confirmar.

2.18 Impossível Executar ou Depurar Classe em um Projeto com Caracteres GB18030 no Nome do Projeto

A maioria das bibliotecas de classe não suportam apropriadamente a criação de um processo do sistema (através de java.lang.Runtime.exec(...)) quando a linha de comandos especificada contém caracteres GB18030. Essa limitação significa que o depurador não pode ativar os aplicativos quando a linha de comandos gerada contém caracteres GB18030.

2.19 Impossível Depurar Estouros de Pilha

Se uma sessão de depuração for suspensa em uma exceção java.lang.StackOverflowError (devido a um ponto de interrupção de exceção), é possível que o depurador não consiga recuperar informações de depuração da JVM de destino. Da mesma forma, o depurador pode não conseguir interagir com segurança com a JVM de destino depois desse ponto.

2.20 Limitação da Avaliação

O depurador utiliza encadeamentos na JVM de destino para executar avaliações (explícitas solicitadas pelo usuário e implícitas, como chamadas toString() na exibição Variables). A JDI (Java Debug Interface) requer que o encadeamento no qual a avaliação é executada seja suspenso por um evento do usuário (isto é, um ponto de interrupção ou pedido de etapa). As avaliações não podem ser executadas em encadeamentos suspensos pela ação de suspensão. Da mesma forma, quando um ponto de interrupção é configurado para suspender a JVM em vez de apenas o encadeamento individual, os encadeamentos que não encontraram o ponto de interrupção não ficam em um estado válido para executar uma avaliação. Quando uma avaliação é tentada em um encadeamento que não está em um estado válido para executar uma avaliação, aparece uma mensagem de erro para o efeito de "Thread must be suspended by step or breakpoint to perform method invocation".

2.21 Pontos de Interrupção Fora do Caminho da Classe de Construção

Os pontos de interrupção podem apenas ser criados em elementos Java que estiverem contidos no caminho da classe de construção de um projeto. O depurador Java excluirá automaticamente os pontos de interrupção se seu elemento Java associado for removido do caminho de construção de um projeto. No entanto, se o plug-in de depuração Java não estiver carregado quando um caminho de construção for alterado, esses pontos de interrupção permanecerão no espaço de trabalho e poderão causar erros quando o usuário tentar ir para o arquivo associado ao ponto de interrupção, na exibição Pontos de Interrupção.

2.22 Correção Rápida e Importações de Pacotes Padrão

A correção rápida não trata das importações de pacotes padrão. Observe que a importação de um pacote padrão não é mais suportada no JDK 1.4.

2.23 Recortar, Copiar e Colar Não Funcionam para Recursos Vinculados em Exibições que Mostram Elementos Java

As ações recortar, copiar e colar não funcionam para arquivos vinculados e pastas que aparecem em exibições que mostram elementos Java, incluindo o Package Explorer. A solução alternativa é utilizar essas ações na exibição Navigator.

2.24 Conjuntos de Trabalho Java Não Funcionam Corretamente para Elementos do Contêiner da Biblioteca do Sistema JRE

Aplicar um conjunto de trabalho consistindo inteiramente em elementos do contêiner da biblioteca do Sistema JRE como filtro para a exibição de pacotes pode resultar em um Package Explorer vazio.

2.25 Impossível Gerar Javadoc para Pacotes com Caracteres GB18030 no Nome

A maioria das bibliotecas de classe não suportam apropriadamente a criação de um processo do sistema (através de java.lang.Runtime.exec(...)) quando a linha de comandos especificada contém caracteres GB18030. Como Javadoc foi criado utilizando o executável Javadoc fornecido com o JDK, a geração de Javadoc falhará se o pacote ou o nome da classe contiver caracteres GB18030.

2.26 A Edição Vinculada Não Funciona Corretamente no Modo Sobrescrever

A edição vinculada é utilizada para renomear elementos em uma única unidade de compilação e para gabaritos com várias ocorrências da mesma variável de gabarito. Ela não funciona corretamente no modo sobrescrever.

2.27 O Gabarito de Geração de Código do Bloco de Captura Deve Finalizar com Nova Linha se a Última for Linha de Comentário

Se a última linha do gabarito de geração de código do bloco de captura for uma linha de comentário, a linha deverá ser finalizada com uma nova linha. Caso contrário, o colchete de fechamento terminará na linha de comentário, resultando em um erro de compilação.

Retornar para o Arquivo Leia-me Principal

>