Restrizione di accesso alla class a causa della restrizione sulla libreria richiesta rt.jar?

Sto tentando di compilare il codice Java 1.4 che è stato creato da IBM WSDL2Java su Java5 senza ricreare gli stub e ho visto questo errore in Eclipse. Sono sotto il presupposto che gli stub creati devono essere compilati solo se i gum di runtime sono disponibili (lo sono).

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

Il nome completo della javax.xml.namespace.QName è javax.xml.namespace.QName

Cosa sta succedendo esattamente qui?

È questo un caso in cui sto cercando di rifattorizzare un maiale dalla salsiccia? Sto meglio ricreando gli stub?

    C’è un’altra soluzione che funziona anche.

    1. Vai alle impostazioni del percorso di costruzione nelle proprietà del progetto.
    2. Rimuovere la libreria di sistema JRE
    3. Aggiungilo di nuovo; Seleziona “Aggiungi libreria” e seleziona la libreria di sistema JRE . L’impostazione predefinita ha funzionato per me.

    Questo funziona perché hai più classi in diversi file jar. Rimuovere e riaggiungere la lib di JRE renderà le classi giuste al primo posto. Se vuoi una soluzione fondamentale assicurati di escludere i file jar con le stesse classi.

    Per me ho: javax.xml.soap.SOAPPart in tre diversi jar: axis-saaj-1.4.jar , saaj-api-1.3.jar e rt.jar

    http://www.digizol.com/2008/09/eclipse-access-restriction-on-library.html ha funzionato meglio per me.

    Su Windows: Windows -> Preferenze -> Java -> Compilatore -> Errori / Avvisi -> API deprecata e limitata -> Riferimento proibito (regole di accesso): -> cambia in avviso

    Su Mac OS X / Linux: Eclipse -> Preferenze -> Java -> Compilatore -> Errori / Avvisi -> API deprecata e limitata -> Riferimento proibito (regole di accesso): -> cambia in avviso

    Ho incontrato lo stesso problema. Ho trovato la risposta nel sito Web: http://www.17ext.com .
    Per prima cosa eliminare le librerie di sistema JRE. Quindi, importare nuovamente le librerie di sistema JRE.

    Non so perché. Tuttavia, ha risolto il mio problema, spero che possa aiutarti.

    La mia ipotesi è che si stia tentando di sostituire una class standard fornita con Java 5 con una in una libreria che si possiede.

    Questo non è consentito dai termini del contratto di licenza, tuttavia AFAIK non è stato applicato fino a Java 5.

    Ho già visto questo con QName e l’ho “risolto” rimuovendo la class dal barattolo che avevo.

    EDIT http://www.manpagez.com/man/1/java/ note per l’opzione “-Xbootclasspath:”

    “Le applicazioni che utilizzano questa opzione allo scopo di eseguire l’override di una class in rt.jar non dovrebbero essere distribuite in quanto ciò potrebbe violare la licenza del codice binario di Java 2 Runtime Environment.”

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

    “Restrizioni alla tecnologia Java: non è ansible modificare l’interfaccia della piattaforma Java (” JPI “, identificata come classi contenute nel pacchetto” java “o sotto pacchetti del pacchetto” java “), creando classi aggiuntive all’interno dell’IPI o altrimenti causando la aggiunta o modifica delle classi nell’IPI Nel caso in cui si crei una class aggiuntiva e API associate che (i) estendono le funzionalità della piattaforma Java e (ii) è esposto a sviluppatori di software di terze parti per allo scopo di sviluppare software aggiuntivo che richiami tale API aggiuntiva, è necessario pubblicare immediatamente una specifica accurata per tale API per l’uso gratuito da parte di tutti gli sviluppatori.Non è ansible creare o autorizzare i licenziatari a creare classi aggiuntive, interfacce o pacchetti secondari che sono in alcun modo identificati come “java”, “javax”, “sun” o convenzione simile come specificato da Sun in qualsiasi designazione di convenzione di denominazione. ”

    Ho ricevuto questo errore, ma il mio progetto è basato sulla riga di comando usando Maven e il compilatore tycho (è un insieme di plugin OSGi). Dopo masse di setacciare persone che hanno lo stesso problema, ma risolvendolo in Eclipse piuttosto che nella riga di comando, ho trovato un messaggio nel forum degli sviluppatori di Tycho che ha risposto alla mia domanda, usando la configurazione in pom.xml per ignorare l’avviso del compilatore sull’accesso restrizione:

      org.eclipse.tycho tycho-compiler-plugin ${tycho.version}  -warn:+discouraged,forbidden   

    Maggiori informazioni possono essere trovate nelle FAQ di Tycho . Questo mi ha portato ad AGES ad allenarmi, quindi ho pensato che avrei aiutato chiunque altro cercando di correggere questi errori di restrizione di accesso dalla riga di comando pubblicando questa risposta.

    • Vai alle impostazioni del percorso di costruzione nelle proprietà del progetto. Windows -> Preferences -> Java Compiler
    • Rimuovere la libreria di sistema JRE
    • Aggiungi un altro JRE con una “corrispondenza perfetta”
    • pulisci e ricostruisci il tuo progetto. Ha funzionato per me.

    Ho appena avuto questo problema anche io. A quanto pare ho impostato il JRE a 1.5 invece di 1.6 nel mio percorso di costruzione.

    Oltre alla soluzione di Nels Beckman , ho i seguenti suggerimenti:

    Sotto Configure Build Path , ho dovuto riorganizzare l’ordine delle mie voci sotto Order and Export .

    Inoltre, come sviluppatore di Eclipse PDE, avevo bisogno di riorganizzare l’ordine delle mie dipendenze nel mio MANIFEST.MF , aggiungendo il pacchetto problematico come prima nella lista.

    Giocando con questi quadranti, oltre a eseguire Progetto> Pulisci in mezzo, sono riuscito a risolvere questi avvertimenti.

    per me questo come lo risolvo:

    • vai al percorso di costruzione del progetto corrente

    sotto Librerie

    • seleziona la ” Libreria di sistema JRE [jdk1.8xxx]”
    • fai clic su modifica
    • e selezionare “Area di lavoro predefinita JRE (jdk1.8xx)” o JRE alternativo
    • Fare clic su Fine
    • Clicca OK

    inserisci la descrizione dell'immagine qui

    Nota: assicurarsi che in Eclipse / Preferences (NON nel progetto) / Java / JRE installato, che il jdk punti alla cartella JDK non a JRE C: \ Programmi \ Java \ jdk1.8.0_74

    inserisci la descrizione dell'immagine qui

    Ci scusiamo per l’aggiornamento di un vecchio post. Ho ricevuto il problema segnalato e l’ho risolto come detto di seguito.

    Supponendo che tu stia utilizzando il plugin Eclipse + m2e maven, se ottieni questo errore di restrizione di accesso, fai clic con il tasto destro del mouse sul progetto / modulo in cui hai l’errore -> Proprietà -> Percorso di creazione -> Libreria -> Sostituisci JDK / JRE a quello utilizzato nell’area di lavoro di Eclipse.

    Ho seguito i passaggi precedenti e il problema è stato risolto.

    Nel caso in cui sei sicuro di poter accedere a una determinata class, questo può significare che hai aggiunto diversi jar al tuo progetto contenenti classi con nomi identici (o percorsi) ma contenuti diversi e che si sovrappongono a vicenda (in genere una vecchia abitudine build jar contiene la vecchia versione integrata di una libreria di terze parti).

    Ad esempio quando aggiungi un’implementazione jar:

     abcd1 abcd2 

    ma anche una versione precedente che implementa solo:

     abcd1 (d2 is missing altogether or has restricted access) 

    Tutto funziona bene nell’editor di codice, ma fallisce durante la compilazione se la “vecchia” libreria oscura quella nuova – d2 diventa improvvisamente “mancante o inaccessibile” anche quando è lì.

    La soluzione è una per controllare l’ordine delle librerie di compilazione e assicurarsi che quello con la corretta implementazione vada per primo.

    Vai al percorso di costruzione Java nelle proprietà del progetto. Rimuovere la libreria di sistema JRE esistente, quindi aggiungerla di nuovo, ad esempio Aggiungi libreria -> JRE Lib – selezionare jre —> Fine. Infine seleziona l’ ordine e la scheda di esportazione seleziona JRE Lib e vai in alto. Questo è tutto.

    Basta cambiare l’ordine delle librerie dei percorsi di costruzione del tuo progetto. Fare clic con il tasto destro del mouse su progetto> Crea percorso> Configura percorso build> Seleziona ordine ed esporta (scheda)> Modifica l’ordine delle voci. Spero che lo spostamento della “libreria del sistema JRE” sul fondo funzioni. Ha funzionato così per me. Facile e semplice …. !!!

    Nel mio caso si è verificata una mancata corrispondenza tra il percorso di compilazione JRE e JRE installato nell’ambiente di esecuzione. Mi sono trasferito in Progetto> Proprietà> Compilatore Java. C’era un messaggio di avvertimento in fondo.

    Ho fatto clic sui collegamenti “Installed JRE”, “Execution environment”, “Java build path” e ho cambiato la versione JDK alla 1.7 e l’avviso è scomparso.

    L’aggiunta di un sistema JRE corretto tramite il percorso di generazione è la soluzione, ma l’eclipse potrebbe ancora presentare l’errore. Per risolvere il problema, vai su Percorso build Java -> Ordina ed esporta e sposta la libreria di sistema JRE in alto. Questo ha risolto il mio problema.