# Java 3D - Access restriction



## Förster44 (6. Nov 2011)

Hallo Java Community,
ich melde mich diesmal mit einem Problem mit Java 3D.
Dieses habe ich mir heute installiert, aber beim Ausprobieren über Eclipse wurde mir alles fein säuberlich rot angekringelt, stets mit der Begründung "Access restriction: The type J3DTimer is not accessible due to restriction on required library C:\Program Files (x86)\Java\jre6\lib\ext\j3dutils.jar"

Zwar habe ich beim Googeln herausgefunden, dass ich diese Fehlermeldung problemlos deaktivieren kann (was beim Austesten* auch funktioniert hat), aber zum einen weiß ich nicht wie und zum anderen verunsichert sie mich trotzdem :S


*Austesten bedeutet in diesem Falle das Fortfahren mit dem Kompilieren trotz der Anzeige von Kompilierfehlern, was nur funktionierte weil ich mir dafür Testcode aus dem Internet kopiert habe und auf Dauer ja keine Lösung ist, da ich nicht gerade so perfekt bin, kontinuierlich keine Kompilierfehler auch anderer Art zu verursachen.


----------



## Marco13 (6. Nov 2011)

Eigentlich sollte die Meldung nicht kommen.... aber abgesehen davon, dass J3DTimer deprecated ist, ist die dann wohl nicht so schlimm...


----------



## Förster44 (29. Dez 2011)

Entschuldigung dass ich mich erst jetzt wieder melde (ich musste in letzter Zeit nicht mit J3D arbeiten und hab das hier deswegen ein bisschen vergessen)^^
Leider habe ich da wohl ein eher unglückliches Beispiel rausgesucht, eine derartige Fehlermeldung erhalte ich nämlich jedesmal, wenn ich auf einen Inhalt von J3D zugreifen möchte. Da das bei mehreren Codezeilen schnell mal für Verwirrung sorgt (zumal ich in Sachen Rotunterkringelung nicht zwischen dem "Schein-Fehler" und Tippfehlern/sonstigen Fehlern unterscheiden kann) wüsste ich schon gerne wie ich diese spezielle Fehlermeldung loswerde...


----------



## nillehammer (29. Dez 2011)

Zunächst zum Symptom, Anleitung zur Beseitigung (Anzeige von Warnings/gelben Kringeln statt Errors/roten Kringeln) gibt's hier:
[Eclipse] Access restriction: Class is not accessible due to restriction on required library @Digizol

Und zur Ursache: Der Fehler entsteht wohl dadurch, dass man sich über Classpath-Einträge Klassen hereinholt, die es mit gleichem Namen schon in den jars unter JRE/lib gibt. In Deinem Fall: Hast Du beim Java-Buildpath das jar nochmal referenziert, obwohl es schon im JRE-lib Ordner liegt?


----------



## Förster44 (29. Dez 2011)

nillehammer hat gesagt.:


> Und zur Ursache: Der Fehler entsteht wohl dadurch, dass man sich über Classpath-Einträge Klassen hereinholt, die es mit gleichem Namen schon in den jars unter JRE/lib gibt. In Deinem Fall: Hast Du beim Java-Buildpath das jar nochmal referenziert, obwohl es schon im JRE-lib Ordner liegt?



Gerne würde ich jetzt eine nützliche Antwort darauf geben, aber unglücklicherweise weiß ich nicht so recht, was du meinst :rtfm:
Soweit ich mich erinnern kann, hab ich bei der Installation von J3D lediglich die von der Java-Website runtergeladene java3d-1_5_1-windows-i586.exe ausgeführt :bahnhof:
Gibt es da was bei Eclipse, wo ich das was du meinst nachschauen kann?


----------



## nillehammer (30. Dez 2011)

> Gibt es da was bei Eclipse, wo ich das was du meinst nachschauen kann?


Ja gibt es. Hab grad kein Eclipse hier, deswegen aus dem Gedächtnis: 
- Rechte Maustaste auf das Projekt -> Properties: Es öffnet sich ein Dialogfenster mit einer Baumansicht auf der linken Seite.
- Java Buildpath auswählen: Rechts erscheinen drei Tabs. Einer davon heißt "Libraries" (glaub ich). Dort stehen alle Libraries (jars), die Dein Projekt referenziert.


----------



## Förster44 (30. Dez 2011)

Ok, das hab ich soweit gefunden^^
Soweit scheint nur die JRE System Library referenziert zu sein, wenn ich diese "ausklappe" finde ich darunter j3dcore.jar und j3dutils.jar (die einzigen beiden mit J3D im Namen), ist das die Ursache des Problems?


----------



## nillehammer (2. Jan 2012)

Hmm, so ist es eigentlich richtig...
Ich hab sonst nur noch gefunden, dass man die JRE System Library selbst aus dem Buildpath raus und danach wieder reinnehmen soll (java - Access restriction on class due to restriction on required library rt.jar? - Stack Overflow). Obwohl ich nicht weiß, was das bringen soll. Aber probieren kann man's ja mal. Ansonsten hab ich leider keine weiteren Vorschläge ;(


----------



## Marco13 (2. Jan 2012)

nillehammer hat gesagt.:


> Hmm, so ist es eigentlich richtig...




Sicher? Ich weiß nicht, ob die wirklich bei den System Libraries dabei sein sollten - bisher hatte ich die immer manuell als "External JAR" zum Build-Path hinzugefügt (kann aber auch sein, dass DAS Unsinn war - Java3D hat da ja quasi eine "Sonderrolle" ... aber immerhin hat es funktioniert  )


----------



## nillehammer (3. Jan 2012)

> Sicher? Ich weiß nicht, ob die wirklich bei den System Libraries dabei sein sollten


Ich hatte Förster44's Posts so verstanden, dass er sich ein Installationspaket heruntergeladen hat, das die jars in den lib-Ordner des JREs kopiert hat. Deswegen war ich davon ausgegangen, dass das so richtig ist.

Aber Du hast Recht, vielleicht wäre es auch einen Versuch wert, die jars dort wieder herauszuschmeißen und als "ganz normale" Libraries in das Projekt einzubinden.


----------

