XMLGregorianCalendarImpl + Access restriction [Resolvido]

Pessoal,

Tem uma classe que usa este XMLGregorianCalendarImpl, na importação da classe da um erro de acesso:

Access restriction: The type XMLGregorianCalendarImpl is not accessible due to restriction on required library F:\Arquivos de programas\jdk1.6.0_07\jre\lib\rt.jar

O import é o seguinte:

import com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl;

Alguém sabe como solucionar este problema?

Resolvido.

O problema era o JDK.

Eu estava usando a versão 1.6, com ela ocorria o erro citado.

Alterei para JDK 5 e funcionou certinho.

Abraços

Na verdade o problema é o seu código, que está usando uma classe protegida (não é o modificador protected não ein). A solução é remover esse tipo de checagem no compilador, assim, pode voltar a usar o JDK 6 (evite usar o 5, já que não há mais suporte).

No Eclipse você configura em:

[quote]Window -> Preferences

Java - Compiler - Errors/Warnings

Deprecated and restricted API

Forbidden reference (access rules)[/quote]

Deixe em warning para não passar despercebido.

[quote=Ataxexe]Na verdade o problema é o seu código, que está usando uma classe protegida (não é o modificador protected não ein). A solução é remover esse tipo de checagem no compilador, assim, pode voltar a usar o JDK 6 (evite usar o 5, já que não há mais suporte).

No Eclipse você configura em:

[quote]Window -> Preferences

Java - Compiler - Errors/Warnings

Deprecated and restricted API

Forbidden reference (access rules)[/quote]

Deixe em warning para não passar despercebido.[/quote]

Mas dessa maneira o código vai continuar funcionando com esta classe?

Sim. A diferença é que o compilador não irá gerar erros por você usar uma classe cujo acesso foi proibido. Em execução nada ocorre.

Tanto é que você pode compilar o código com o JDK 5 e rodar sem problemas no JDK 6.

Via de regra, evite usar as classes do pacote com.sun.* pois não é garantida a compatibilidade delas entre as versões do Java. Voce pode acabar com um comportamento inesperado e demorar um tempo pra descobrir o motivo.