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 Compilação
    2.11 VM e Finalização do Processo em Execução no IBM 1.3 JVM no Linux 
     2.12 Ações para Modificar Arquivos Somente Leitura
    2.13 Gabaritos de Código Java
    2.14 Organizar Importação e Importações de Pacotes Padrão
    2.15 Incluir Ação de Javadoc nos Campos
    2.16 Ajuda Instantânea de Javadoc no Editor Java
    2.17 Código HTML > Exibido na Nova Classe Java em Vez de >
    2.18 Não é Possível Executar ou Depurar a Classe em um projeto com Caracteres GB18030 no Nome do Projeto
    2.19 Não é Possível Depurar os Estouros de Pilha
    2.20 Limitação da Avaliação   
    2.21 Pontos de Interrupção Fora do Caminho da Classe de Compilação   
    2.22 Correção Rápida e Importações de Pacotes Padrão   
    2.23 Recortar, Copiar, Colar Não Estão Funcionando para Recursos Vinculados em Exibições que Mostram Elementos Java
    2.24 Os Conjuntos de Trabalho Java Não Estão Funcionando Corretamente para Elementos do Contêiner da Biblioteca do Sistema JRE   
    2.25 Não é Possí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 do Código em Bloco de Captura Deve Terminar com Nova Linha se a Última Linha For uma Linha de Comentário
    2.28 Problema para Abrir o Editor de Arquivos de Classe

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 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 VM e Finalização do Processo em Execução no IBM 1.3 JVM no Linux 

Finalizar uma ativação, um destino de depuração ou um processo do sistema associado a um destino de depuração em execução no IBM 1.3 JVM na plataforma Linux não funciona quando o destino de depuração associado tiver um encadeamento suspenso. Para remover esses destinos de depuração da UI de depuração, selecione Terminate and Remove no menu pop-up da exibição de depuração (ou utilize o atalho, tecla "delete"). Os processos do sistema associados no sistema operacional podem não ser adequadamente limpos. Se um destino de depuração não tiver nenhum encadeamento suspenso, a finalização funciona corretamente.

2.12 Ações para Modificar Arquivos Somente Leitura

As ações no menu Source (por exemplo, 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.13 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.14 Organizar Importação e Importações 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.15 Incluir Ação de Javadoc nos Campos

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

2.16 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.17 Código HTML > Exibido na Nova Classe Java em vez de >

Ao criar uma nova classe Java, os comentários gerados indicam:

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 do que (>) está sendo utilizado em vez do sinal em si. O comentário deveria ser:

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

2.18 Não é Possível Executar ou Depurar a 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. Essa limitação indica que o depurador não pode ativar aplicativos quando a linha de comandos gerada contiver caracteres GB18030.

2.19 Não é Possível Depurar os Estouros de Pilha

Se uma sessão de depuração for suspensa em uma execução java.lang.StackOverflowError (devido a um ponto de interrupção de execuçã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 forma confiável com a JVM de destino além desse ponto.

2.20 Limitação da Avaliação

O depurador utiliza encadeamentos na JVM de destino para executar avaliações (avaliações explícitas solicitadas pelo usuário e avaliações implícitas, como chamadas toString() na exibição Variables). A JDI (Java Debug Interface) requer que o encadeamento no qual uma avaliação é executada seja suspenso pelo evento do usuário (ou seja, um ponto de interrupção ou pedido 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 for 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 estarão em um estado válido para executar uma avaliação. Quando há a tentativa de uma avaliação em um encadeamento que não está em um estado válido para executar uma avaliação, aparecerá uma mensagem de erro similar a: "Thread must be suspended by step or breakpoint to perform method invocation".

2.21 Pontos de Interrupção do Caminho da Classe de Compilação

Os pontos de interrupção podem ser criados somente em elementos Java contidos no caminho da classe de compilação de um projeto. O depurador Java exclui automaticamente os pontos de interrupção se seu elemento Java associado for removido do caminho de compilação de um projeto. No entanto, se o plug-in de depuração Java não for carregado quando um caminho de compilaçã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 de 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 Estão Funcionando para Recursos Vinculados em Exibições que Mostram Elementos Java

As ações recortar, copiar e colar não funcionam para os 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 da exibição Navigator.

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

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

2.25 Não é Possível Gerar Javadoc para Pacotes com Caracteres GB18030 no Nome

A maioria das bibliotecas de classes não suporta 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 do Javadoc fornecido com o JDK, a geração do 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. A edição vinculada não funciona corretamente no modo sobrescrever.

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

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

2.28 Problema para Abrir o Editor de Arquivos de Classe

Se a preferência "Use classpath containers" tiver sido ativada na página de preferências Plug-in Development > Java Build Path Control, você poderá não conseguir abrir um editor de arquivo de classe para um arquivo de classe contido em um JAR no contêiner "Required plug-in entries". Uma solução alternativa para o problema é expandir o arquivo de classe no Packages Explorer; isso exibirá 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 é anexar o código fonte ao arquivo JAR.

Para anexar o código 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 do código fonte correspondente.
  8. Clique em OK para confirmar.

Retornar para o arquivo Readme principal

>