Resolvendo Access restriction no Eclipse

Algumas classes da JVM são "proibidas" de serem utilizadas. Umas classes por serem proprietárias, outras por não fazerem parte da especificação oficial. Em alguns casos se faz necessário desabilitar essa restrição para podermos trabalhar com elas, me deparei hoje novamente com essa situação.

A primeira vez que tive esse problema foi quando precisava utilizar um código específico da máquina virtual Java da antiga Sun para descobrir nomes de variáveis de métodos em bytecodes gerados por ela. Hoje novamente me deparei com esse mesmo problema ao tentar criar um Look And Feel (LAF) personalizado para o Java. Para criar esse LAF, preciso de acesso às classes do pacote: com.sun.java.swing.plaf.

Ao utilizar uma classe localizada nesse pacote o eclipse me exibe a seguinte mensagem:

Access restriction: The type NimbusLookAndFeel is not accessible due to restriction on required library /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar

Properties for Error
Properties for Error

Para o OpenJDK essas classes possuem acesso restrito. Para liberar o acesso clique com o botão direito no projeto, Build Path, Configure Build Path, Libraries e expanda a lib da JRE.

Properties for Project
Properties for Project

Selecione Access rules e clique em edit. Clique em Add, selecione Accessible em Resolution e em Rule Pattern coloque o que deseja liberar.

Add Access Rule
Add Access Rule

Pressione Ok. Você deve ficar com a seguinte tela:

Type Access Rules
Type Access Rules

Pressione Ok novamente e pronto! O erro sumiu. Algumas versões de JDK com o atual da Oracle não tem restrição com classes do Look And Feel.

Sobre: Thiago Galbiatti Vespa

Thiago Galbiatti Vespa é mestre em Ciências da Computação e Matemática Computacional pela USP e bacharel em Ciências da Computação pela UNESP. Coordenador de projetos do JavaNoroeste, membro do JCP (Java Community Process), consultor Oracle, arquiteto de software de empresas de médio e grande porte, palestrante de vários eventos e colaborador de projetos open source. Possui as certificações: Oracle Certified Master, Java EE 5 Enterprise Architect – Step 1, 2 and 3; Oracle WebCenter Portal 11g Certified Implementation Specialist; Oracle Service Oriented Architecture Infrastructure Implementation Certified Expert; Oracle Certified Professional, Java EE 5 Web Services Developer; Oracle Certified Expert, NetBeans Integrated Development Environment 6.1 Programmer; Oracle Certified Professional, Java Programmer; Oracle Certified Associate, Java SE 5/SE 6