java wsdl2java - Restrição de acesso na classe devido a restrição na biblioteca requerida rt.jar?





create stub (13)


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

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.




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.




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.




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.




Vá para o Java Build Path nas propriedades do projeto. Remova a biblioteca do sistema JRE existente e adicione-a novamente, por exemplo, Add Library -> JREL Lib - select jre ---> Finish. Por fim, selecione a guia ordem e exportação, selecione JRELIB e mova-a para cima. É isso aí.




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.




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.




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




Meu palpite é que você está tentando substituir uma classe padrão que vem com o Java 5 com 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 aplicado até o Java 5.

Eu já vi isso com QName antes e eu "consertei" isso removendo a classe do jar que eu tinha.

EDITAR http://www.manpagez.com/man/1/java/ notas 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 violaria a licença do código binário do Java 2 Runtime Environment."

O http://www.idt.mdh.se/rc/sumo/aJile/Uppackat/jre/LICENSE

"Restrições de Tecnologia Java. Você não pode modificar a Interface de Plataforma Java (" JPI ", identificada como classes contidas no pacote" java "ou quaisquer subpacotes do pacote" java "), criando classes adicionais dentro do JPI ou causando o adição ou modificação das classes no JPI No caso de você criar uma classe adicional e API (s) associada (s) que (i) estenda a funcionalidade da plataforma Java, e (ii) seja exposta a desenvolvedores de software de terceiros para Com o propósito de desenvolver software adicional que chame essa API adicional, você deve publicar prontamente uma especificação precisa para essa API para uso gratuito por todos os desenvolvedores.Você não pode criar ou autorizar seus licenciados a criar classes adicionais, interfaces ou subpacotes que são de alguma forma identificados como "java", "javax", "sun" ou convenção similar conforme especificado pela Sun em qualquer designação de convenção de nomenclatura. "




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.




Esta resposta é um complemento para a resposta de @ shawalli ...

Eu queria também referenciar uma imagem dentro do meu jar, mas ao invés de ter um BufferedImage, eu fiz o seguinte:

 JPanel jPanel = new JPanel();      
 jPanel.add(new JLabel(new ImageIcon(getClass().getClassLoader().getResource("resource/images/polygon.jpg"))));




java eclipse wsdl stub wsdl2java