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 em Nova Classe Java em Vez de >
    2.17 Problema ao Abrir Editor de Arquivo de Classe
    2.18 Impossível Executar ou Depurar Classe em um Projeto com Caracteres GB18030 no Nome do Projeto
    2.19 Incapaz de Depurar Estouros de Pilha
    2.20 Limitação de Avaliação   
    2.21 Pontos de Interrupção Fora do Caminho de 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 a Partir de Contêiner de Biblioteca do Sistema JRE   
    2.25 Impossível Gerar Javadoc para Pacotes com Caracteres GB18030 no Nome
    2.26 Edição Vinculada Não Funciona Corretamente no Modo Sobrescrever
    2.27 Gabarito de Geração de Código de Bloco Catch Precisa Finalizar com Avanço de Linha se a Última Linha for um Comentário de Linha

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 IBMR 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 de campos constantes dentro de binários porque a Especificação da Linguagem Java determina que os valores de campos constantes 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 em Nova Classe Java em Vez de >

Quando se cria uma nova classe Java, os comentários gerados aparecem como:

To change the template for this generated file go to Windows > Preferences > Java > Code Generation > Code and Comments.

O código HTML para o sinal de maior que (>) está sendo utilizado em vez do próprio sinal. O comentário deveria ser:

To change the template for this generated file go to Windows > Preferences > Java > Code Generation > Code and Comments.

2.17 Problema ao Abrir Editor de Arquivo de Classe

Se a preferência "Use classpath containers" foi ativada na página de preferências Plug-in Development > Java Build Path Control, você pode não ser capaz de abrir um editor de arquivo de classe para um arquivo de classe contido em um JAR no contêiner "Required plug-in entries". Uma maneira de contornar o problema é expandir o arquivo de classe no Packages Explorer; isto exibe a estrutura do arquivo de classe como o editor o faria. Se um zip do código fonte estiver disponível para o JAR, outra opção é conectar fonte ao arquivo JAR.

Para conectar fonte a um 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 para o JAR
  6. Selecione Source Attachment e clique em Edit.
  7. Insira a localização do zip de fonte 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 classes não suportam corretamente a criação de um processo do sistema (através de java.lang.Runtime.exec(...)) quando a linha de comandos especificada contiver caracteres GB18030. Esta limitação significa que o depurador não pode ativar aplicativos quando a linha de comandos que ele gera contiver caracteres GB18030.

2.19 Impossível Depurar Estouros de Pilha

Se uma sessão de depuração suspender em uma exceção java.lang.StackOverflowError (devido a um ponto de interrupção de exceção), o depurador pode não ser capaz de recuperar nenhuma informação de depuração da JVM de destino. Além disso, o depurador pode não ser capaz de interagir de maneira confiável com a JVM de destino após esse ponto.

2.20 Limitação de Avaliação

O depurador utiliza encadeamentos na JVM de destino para executar avaliações (tanto avaliações explícitas que o usuário solicita quanto avaliações implícitas tais como chamadas a toString() na exibição Variables). A JDI (Java Debug Interface) exige que o encadeamento no qual uma avaliação é executada seja suspenso por um evento do usuário (ou seja, um pedido de ponto de interrupção ou de etapa). As avaliações não podem ser executadas em encadeamentos suspensos pela ação suspender. Além disso, quando um ponto de interrupção é configurado para suspender a JVM em vez de apenas o encadeamento individual, os encadeamentos que não encontrarem o ponto de interrupção não estarão 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, uma mensagem de erro aparecerá indicando que "Thread must be suspended by step or breakpoint to perform method invocation".

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

Os pontos de interrupção somente podem ser criados em elementos Java que estejam contidos no caminho da classe de construção de um projeto. O depurador Java exclui automaticamente os pontos de interrupção se seu elemento Java associado for removido do caminho de construção de um projeto. Contudo, 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, a partir da exibição Breakpoints.

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, Colar Não Funcionam para Recursos Vinculados em Exibições que Mostram Elementos Java

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

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

A aplicação de um conjunto de trabalho consistindo inteiramente em elementos do contêiner da biblioteca JRE System como um 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 classes não suportam corretamente a criação de um processo do sistema (através de java.lang.Runtime.exec(...)) quando a linha de comandos especificada contiver caracteres GB18030. Como o Javadoc é criado utilizando o executável Javadoc fornecido com o JDK, a geração de Javadoc falha se o nome do pacote ou da classe contiver caracteres GB18030.

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

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

2.27 Gabarito de Geração de Código de Bloco Catch Precisa Finalizar com Avanço de Linha se a Última Linha for um Comentário de Linha

Se a última linha do gabarito de geração de código de bloco catch for um comentário de linha, a linha deve ser finalizada com um avanço de linha. Caso contrário, a chave de fechamento terminará na linha de comentário, resultando em um erro de compilação.

Retornar para o arquivo leia-me principal

>