from - maven wsdl2java example




Restrição de acesso na classe devido a restrição na biblioteca requerida rt.jar? (10)

Adicionar um sistema JRE certo através do caminho de construção é a solução, mas o seu eclipse ainda pode ter o erro. Para resolver isso, acesse Java Build path -> Order and Export e mova a biblioteca do sistema JRE no topo. Isso resolveu meu problema.

Eu estou tentando compilar o código Java 1.4 que foi criado pelo IBM WSDL2Java no Java5 sem recriar os stubs e vi esse erro no Eclipse. Eu estou sob a suposição de que os stubs criados devem apenas compilar contanto que os jars de tempo de execução estejam disponíveis (eles são).

Access restriction: The type QName is not accessible due to restriction on required library C:\Program Files\Java\jdk1.5.0_16\jre\lib\rt.jar

O nome completo da classe é javax.xml.namespace.QName

O que exatamente está acontecendo aqui?

Este é um caso em que estou tentando refatorar um porco de salsicha? Estou melhor recriando os tocos?


Além da solução de Nels Beckman , tenho as seguintes dicas:

Em Configure Build Path , tive que reorganizar a ordem das minhas entradas em Order e Export .

Além disso, como desenvolvedor do Eclipse PDE, precisei reorganizar a ordem de minhas dependências em meu MANIFEST.MF , adicionando o pacote problemático como primeiro na lista.

Jogando com esses mostradores, juntamente com a execução de Projeto> Limpar entre, eu consegui resolver esses avisos.


Desculpe por atualizar um POST antigo. Eu tenho o problema relatado e resolvi como dito abaixo.

Supondo que você esteja usando o plugin maven do Eclipse + m2e, se você receber este erro de restrição de acesso, clique com o botão direito no projeto / módulo no qual você tem o erro -> Properties -> Build Path -> Library -> Replace JDK / JRE para aquele que é usado no espaço de trabalho do eclipse.

Eu segui os passos acima e o problema está resolvido.


Eu encontrei o mesmo problema. Eu encontrei a resposta no site: http://www.17ext.com .
Primeiro, exclua as bibliotecas do sistema JRE. Em seguida, importe as bibliotecas do sistema JRE novamente.

Eu não sei porque. No entanto, isso resolveu o meu problema, espero que possa ajudá-lo.


Eu tenho recebido este erro também, mas meu projeto é construído na linha de comando usando o Maven e o compilador tycho (é um conjunto de plugins OSGi). Depois de vasculhar pessoas tendo o mesmo problema, mas consertando-o no Eclipse do que na linha de comando, encontrei uma mensagem no fórum de desenvolvedores Tycho que respondeu à minha pergunta, usando a configuração em pom.xml para ignorar o aviso do compilador sobre o acesso restrição:

<plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>tycho-compiler-plugin</artifactId>
    <version>${tycho.version}</version>
    <configuration>
        <compilerArgument>-warn:+discouraged,forbidden</compilerArgument>
    </configuration>
</plugin>

Mais informações podem ser encontradas no FAQ do Tycho . Isso me levou AGES para trabalhar fora, então eu percebi que eu iria ajudar alguém tentando corrigir esses erros de restrição de acesso a partir da linha de comando, postando esta resposta.


Existe outra solução que também funciona.

  1. Vá para as configurações do caminho de compilação nas propriedades do projeto.
  2. Remover a biblioteca do sistema JRE
  3. Adicione de volta; Selecione "Adicionar biblioteca" e selecione a biblioteca do sistema JRE . O padrão funcionou para mim.

Isso funciona porque você tem várias classes em diferentes arquivos jar. Remover e adicionar novamente a biblioteca do JRE fará com que as classes certas sejam as primeiras. Se você quer uma solução fundamental, certifique-se de excluir os arquivos jar com as mesmas classes.

Para mim eu tenho: javax.xml.soap.SOAPPart em três jars diferentes: axis-saaj-1.4.jar , saaj-api-1.3.jar e o rt.jar


No caso de você ter certeza de que deve poder acessar determinada classe, isso pode significar que você adicionou vários jars ao seu projeto contendo classes com nomes (ou caminhos) idênticos, mas conteúdos diferentes e eles estão ofuscando uns aos outros build jar contém uma versão antiga de uma biblioteca de terceiros).

Por exemplo, quando você adiciona um pote implementando:

a.b.c.d1
a.b.c.d2

mas também uma versão mais antiga implementando apenas:

a.b.c.d1
(d2 is missing altogether or has restricted access)

Tudo funciona bem no editor de código, mas falha durante a compilação se a "velha" biblioteca ofuscar a nova - d2 de repente fica "ausente ou inacessível" mesmo quando está lá.

A solução é verificar a ordem das bibliotecas em tempo de compilação e certificar-se de que aquela com a implementação correta seja a primeira.


No meu caso, houve uma incompatibilidade entre o JRE do caminho de construção e o JRE instalado no ambiente de execução. Eu mudei para o projeto> Propriedades> compilador Java. Houve uma mensagem de aviso na parte inferior.

Cliquei nos links 'Installed JRE', 'Execution environment', 'Java build path' e alterei a versão do JDK para 1.7 e o aviso desapareceu.


para mim, como eu resolvo:

  • vá para o caminho de construção do projeto atual

em Bibliotecas

  • selecione a " Biblioteca do sistema JRE [jdk1.8xxx]"
  • clique em editar
  • e selecione "JRE padrão do espaço de trabalho (jdk1.8xx)" OU JRE alternativo
  • Clique final
  • Clique OK

Nota: certifique-se de que no Eclipse / Preferences (NÃO no projeto) / Java / Installed JRE, o jdk aponte para a pasta JDK e não para o JRE C: \ Arquivos de Programas \ Java \ jdk1.8.0_74


http://www.digizol.com/2008/09/eclipse-access-restriction-on-library.html funcionou melhor para mim.

No Windows: Windows -> Preferências -> Java -> Compilador -> Erros / Avisos -> API descontinuada e restrita -> Referência Proibida (regras de acesso): -> mudança para aviso

No Mac OS X / Linux: Eclipse -> Preferências -> Java -> Compilador -> Erros / Avisos -> API descontinuada e restrita -> Referência Proibida (regras de acesso): -> mudança para aviso





wsdl2java