2014-07-14 11 views
18

Sto usando eclipse kepler con java SE 1.8 jdk libreria di sistema, ma quando uso qualsiasi classe javafx o metodi eclipse dà un avvertimento come Access restriction: The type 'TableColumn<?,?>' is not API (restriction on required library 'C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\jfxrt.jar').Eclipse avvisa sulla restrizione di accesso per le classi jfxrt.jar

Ho provato ad aggiungere una regola di accesso alla libreria di sistema per consentire l'accesso per tutti i vasi della libreria utilizzando il jolly * ma l'avviso è ancora lì. Sto anche usando Maven per il progetto di costruzione. Il codice funziona ma l'avviso è fastidioso e influisce sulla leggibilità durante la codifica. Qualsiasi aiuto è apprezzato.

Edit: Ho anche provato ad aggiungere @SuppressWarnings("restriction") all'inizio dei miei corsi, ma questo ancora non risolve la causa sconosciuta e nasconde tutti gli altri avvisi di restrizione che possono avere bisogno di vedere

+1

possibile duplicato del [Uso JavaFX in JRE 8] (http://stackoverflow.com/questions/22812488/using-javafx-in-jre-8) – Hilikus

+1

La sintassi dei caratteri jolly è errata. Hai usato '*' che non è ricorsivo, intendevi usare '**', e tu * dovresti * aver usato solo 'javafx/**'. Vedi la mia risposta qui sotto. –

risposta

5

È possibile scegliere ignore nel seguente impostazioni:

Windows -> Preferences -> Java -> Compiler -> Errors/Warnings 
(Project) Properties -> Java Compiler -> Errors/Warnings 

Usa filtro per trovare "Forbidden reference"

Forbidden reference (access rules): cambiare a "ignore"

enter image description here

+6

Grazie per l'aiuto, ma se potessi correggere la causa dell'avviso piuttosto che sopprimerlo sarebbe meglio. –

+0

Ulteriori informazioni qui: http://stackoverflow.com/a/22815472/199296 –

+4

Sconsiglio vivamente a questa soluzione e non dovrebbe essere accettata. Cambierete le impostazioni per TUTTE le librerie, non solo JavaFX. Uno dovrebbe assicurarsi di utilizzare il JDK nel percorso di costruzione come indicato dalla risposta seguente ... – mmey

7

Il modo più semplice è quello di installare e (fx) Clipse - un plugin per Eclipse per supportare JavaFX:

  1. Selezionare Guida -> Install New Software
  2. Fare clic sul pulsante Aggiungi per aggiungere il seguente sito:
  3. Fare clic su OK
  4. Nella "Lavorare con" elenco a discesa, selezionare il sito ha recentemente aggiunto "efxclipse"
  5. Selezionare la casella di controllo "e (fx) Clipse - install" per installare tutti i componenti di questa selezione
  6. Passa ai passaggi successivi per completare l'installazione
  7. Riavvia Eclipse. Se ancora non riconosce la libreria JavaFX, riavvialo nuovamente.

informazioni originale si trova qui: https://www.eclipse.org/efxclipse/install.html#for-the-lazy

26

sono in grado di superare questa riconfigurando libreria Java. Ad esempio, la selezione esplicita di Oracle JDK fa il trucco.

Configure Build Path

Edit Java lib

Select explicit JDK

+0

Questa tecnica esatta ha funzionato esattamente come descritto – systemcpro

3

Aggiungi una regola di accesso per consentire l'accesso ai javafx/**.

Vedi anche questa risposta: https://stackoverflow.com/a/32062263/1060350

Per tutto quello che posso dire, questo è un bug in Eclipse a mio parere. Inoltre non sono riuscito a trovare un modo per configurarlo globalmente in Eclipse, ma è necessario rifarlo per ogni progetto.

Passare a Impostazioni progetto, Percorso di creazione, Librerie, JRE. Clicca su "Regole di accesso" che dovrebbero avere "Nessuna regola definita" di solito. Aggiungi una nuova regola: "Accessibile" e inserisci il pattern "javafx/**".

Questo indica al compilatore Java Eclipse che javafx.* è un'API ufficiale che è possibile utilizzare, quindi l'avviso scompare.

Chiaramente, consentire l'accesso a javafx è molto meglio che ignorare l'avviso.

Il motivo per cui * non ha funzionato è perché non hai letto la definizione di caratteri jolly. Nelle regole di accesso, * corrisponde una sola volta, è necessario che lo ** corrisponda a qualsiasi profondità. Cioè * consentirà l'accesso a javafx.SomeClass ma non non javafx.scene.SomeClass ...

2

Aggiungi una regola di accesso per javafx.

Fare clic destro del progetto> Proprietà> Java Build Path> scheda Librerie, quindi:

  • Expand JRE Sistema Bibliotecario
  • selezionare le regole di accesso, fare clic su Edit... pulsante
  • click Add...
  • scegliere Risoluzione : Accessible
  • impostato Modello di regola: javafx/**
  • click OK
  • click OK

add access to lib for jfxrt

Problemi correlati