Estou tentando compilar o código Java 1.4 que foi criado pelo WSDL2Java da IBM no Java5 sem recriar os stubs e vi esse erro no Eclipse .
Estou no pressuposto de que os stubs gerados devem ser compilados apenas enquanto o tempo de execução estiver disponível (eles estão).jars
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 o caso em que estou tentando refatorar um porco da linguiça? É melhor recriar os stubs?
Respostas:
Há outra solução que também funciona.
Isso funciona porque você tem várias classes em diferentes arquivos jar. Remover e adicionar novamente a biblioteca JRE fará com que as classes corretas sejam as primeiras. Se você deseja uma solução fundamental, exclua os arquivos jar com as mesmas classes.
Para mim eu tenho:
javax.xml.soap.SOAPPart
em três frascos diferentes:axis-saaj-1.4.jar
,saaj-api-1.3.jar
eort.jar
fonte
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 reprovada e restrita -> Referência proibida (regras de acesso): -> alterar para aviso
No Mac OS X / Linux: Eclipse -> Preferências -> Java -> Compilador -> Erros / Avisos -> API reprovada e restrita -> Referência proibida (regras de acesso): -> alterar para aviso
fonte
Eu encontrei o mesmo problema. 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.
Não sei por que. No entanto, isso resolveu meu problema, espero que possa ajudá-lo.
fonte
Meu palpite é que você está tentando substituir uma classe padrão que é fornecida com Java 5 por uma em uma biblioteca que você possui.
Isso não é permitido sob os termos do contrato de licença, no entanto, o AFAIK não foi imposto até o Java 5.
Eu já vi isso com QName antes e o "consertei" removendo a classe do jar que eu tinha.
EDITAR http://www.manpagez.com/man/1/java/ notes para a opção "-Xbootclasspath:"
"Os aplicativos que usam essa opção com o objetivo de substituir uma classe no rt.jar não devem ser implementados, pois isso contraria a licença de código binário do Java 2 Runtime Environment."
o http://www.idt.mdh.se/rc/sumo/aJile/Uppackat/jre/LICENSE
"Restrições à tecnologia Java. Você não pode modificar a Java Platform Interface (" JPI ", identificada como classes contidas no pacote" java "ou quaisquer subpacotes do pacote" java "), criando classes adicionais na JPI ou causando o adição ou modificação das classes na JPI.No caso de você criar uma classe adicional e APIs associadas que (i) estendem a funcionalidade da plataforma Java e (ii) são expostas a desenvolvedores de software de terceiros para com o objetivo de desenvolver software adicional que invoque essa API adicional, você deve publicar prontamente uma especificação precisa dessa API para uso gratuito por todos os desenvolvedores. Você não pode criar ou autorizar seus licenciados a criar classes adicionais, interfaces,ou subpacotes identificados de alguma forma como "java", "javax", "sun" ou convenção semelhante, conforme especificado pela Sun em qualquer designação de convenção de nomenclatura. "
fonte
Também recebi esse erro, mas meu projeto foi desenvolvido na linha de comando usando o Maven e o compilador tycho (é um conjunto de plugins OSGi). Após várias pesquisas entre as pessoas com o mesmo problema, mas corrigindo-o no Eclipse, e não na linha de comando, encontrei uma mensagem no fórum de desenvolvedores do Tycho que respondeu minha pergunta, usando a configuração
pom.xml
para ignorar o aviso do compilador sobre a restrição de acesso:Mais informações podem ser encontradas nas Perguntas frequentes sobre o Tycho . Isso levou o AGES a resolver, então imaginei que ajudaria qualquer outra pessoa que tentasse corrigir esses erros de restrição de acesso na linha de comando postando esta resposta.
fonte
Windows -> Preferences -> Java Compiler
fonte
Eu também tive esse problema. Aparentemente, eu configurei o JRE para 1,5 em vez de 1,6 no meu caminho de construção.
fonte
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 and Export .
Além disso, como desenvolvedor do Eclipse PDE, eu precisava reorganizar a ordem das minhas dependências
MANIFEST.MF
, adicionando o pacote problemático como o primeiro da lista.Tocando com esses mostradores, juntamente com a execução de Project> Clean no meio, consegui resolver esses avisos.
fonte
para mim é assim que eu resolvo:
em Bibliotecas
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
fonte
Desculpe por atualizar um POST antigo. Eu obtive o problema relatado e resolvi-o conforme mencionado abaixo.
Supondo que você esteja usando o plug-in Eclipse + m2e maven, se você receber esse erro de restrição de acesso, clique com o botão direito do mouse no projeto / módulo no qual você tem o erro -> Propriedades -> Caminho da Construção -> Biblioteca -> Substituir JDK / JRE para o que é usado na área de trabalho do eclipse.
Segui as etapas acima e o problema foi resolvido.
fonte
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 com conteúdo diferente e elas estão se ofuscando (normalmente um costume antigo jar de compilação contém a versão mais antiga de uma biblioteca de terceiros).
Por exemplo, quando você adiciona um jar implementando:
mas também uma versão mais antiga implementando apenas:
Tudo funciona bem no editor de código, mas falha durante a compilação se a biblioteca "antiga" ofuscar a nova - d2 repentinamente se torna "ausente ou inacessível", mesmo quando está lá.
A solução é verificar a ordem das bibliotecas em tempo de compilação e garantir que a implementação correta seja a primeira.
fonte
Vá para o Java Build Path nas propriedades do projeto. Remova a biblioteca do sistema JRE existente. Em seguida, adicione-a novamente, por exemplo, Adicionar biblioteca -> JRE Lib - selecione jre ---> Concluir. Por fim, selecione a guia ordem e exportação, selecione JRE Lib e mova para cima. É isso aí.
fonte
Apenas mude a ordem das bibliotecas de caminhos de construção do seu projeto. Clique com o botão direito do mouse em projeto> Caminho da Construção> Configurar Caminho da Construção> Selecionar Pedido e Exportar (Guia)> Alterar a ordem das entradas. Espero que a movimentação da "biblioteca JRE System" para o final funcione. Funcionou assim para mim. Fácil e simples .... !!!
fonte
No meu caso, houve uma incompatibilidade entre o caminho do build JRE e o JRE instalado no ambiente de execução. Eu mudei para Projeto> Propriedades> Compilador Java. Havia 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.
fonte
Incluir um sistema JRE correto através do caminho de construção é a solução, mas seu eclipse ainda pode ter o erro. Para resolver isso, vá para o Java Build path -> Order and Export e mova sua biblioteca do sistema JRE na parte superior. Isso resolveu meu problema.
fonte