ich bekomme in den Zeilen
javax.xml.parsers.DocumentBuilderFactory dbf =
javax.xml.parsers.DocumentBuilderFactory.newInstance();
javax.xml.parsers.DocumentBuilder db =
dbf.newDocumentBuilder();
die Exception
sealing violation
java.lang.SecurityException: sealing violation
at java.net.URLClassLoader.defineClass(URLClassLoader.java:234)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
at
org.apache.xerces.jaxp.DocumentBuilderImpl.<init>(DocumentBuilderImpl.java:98)
at
org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(DocumentBuilderFactoryImpl.java:87)
at cosima.components.gateway.bluetooth.Main.main(Main.java:67)
Kann mir jemand sagen warum?
Ich habe mir noch ein DummyProjekt zusammengebaut, indem nichts anderes
gemacht wird ausser Xerces einzubinden und die obigen Zeilen
auszufuehren.
Da laeuft alles durch. Dann habe ich noch alle Bibliotheken in den
classpath
gepackt, die ich in meinem Projekt habe und das DummyProjekt laeuft
weiterhin durch.
Auch meine alten Projekte werfen die selbe Meldung aus.
Besten Dank
Hans Georg
Deine Exception dürfte warscheinlich daher kommen, das Xerces Klassen
aus der JAR Datei als "sealed" gekennzeichnet sind. Das kannst Du
prüfen, indem Du die JAR Datei enpackst und in der Manifest Datei nach
einem Eintrag "Sealed: true" suchst. Soweit vorhanden, bedeutet das für
die entsprechenden Klassen das diese nur aus der selben JAR Datei kommen
dürfen. Eine eigene Implementierung von z.B.
org.apache.xerces.DocumentImpl außerhalb der JAR Datei wird dadurch vom
Security Manager verhindert. Versuch doch mal, ob die beschriebenen
Probleme immer noch auftretten, wenn Du Xerces.JAR als erstes im
Classpath stehen hast. Prüfe ob vielleicht andere JAXP Klassen im Weg sind.
Viel Erfolg
Stefan
vielen Dank erst mal fuer die flotte Antwort.
Leider bin ich nicht weiter gekommen. Ich habe hier mehrere
Xerces-Versionen ausgetestet. Die Manifest Dateien habe ich
mir auch angeschaut. Da steht nirgends das Wort "Sealed".
Die Xerces-Bibliothek steht auch an erster stelle im Classpath.
Wozu wird das "Sealed" eigentlich benoetigt? Wer will hier was
verriegeln?
Danke, ciao
Hans Georg
PS: Ach ja, mein Dummytestprogramm laeuft doch nicht. Da kommt
die gleiche Meldung, obwohl in der Mainmethode lediglich versucht
wird ein DocumentBuilder zu erzeugen. Als Bibliothek ist hier nur
Xerces dazugebunden.
Stefan Podkowinski schrieb:
Hans Georg Frey schrieb:
Hans Georg Frey wrote:
> Hi,
>
> vielen Dank erst mal fuer die flotte Antwort.
>
> Leider bin ich nicht weiter gekommen. Ich habe hier mehrere
> Xerces-Versionen ausgetestet. Die Manifest Dateien habe ich
> mir auch angeschaut. Da steht nirgends das Wort "Sealed".
> Die Xerces-Bibliothek steht auch an erster stelle im Classpath.
Viel mehr fällt mir auch nicht mehr ein. Folgendes kannst Du nochmal prüfen:
- Benutzt Du jdk1.4? Die DocumentBuilder Klasse ist Bestandteil dieses
Releases
- liegen XML bezogene JAR Dateien im Verzeichnis $JAVA_HOME/jre/lib/ext
> Wozu wird das "Sealed" eigentlich benoetigt? Wer will hier was
> verriegeln?
>
Es geht darum das Du damit explizit sagst, das nur _Deine_ Klassen aus
_Deinem_ JAR Archiv von deinen Klassen aus verwendet werden. Stell Dir
vor, ich schiebe Dir eine JAR Datei unter (als Java Extension) die ich
javax.xml.parsers.DocumentBuilderImpl nenne und dessen newInstance()
Methode mir den Inhalt Deiner geheimen Geheim-Dateien(tm) per Email
schickt. Ich denke es würde nicht in deinem Interesse liegen, wenn genau
diese Klasse und nicht die in der Xerces JAR Datei von Xerces verwendet
wird.
cu
Stefan
Die Idee des Querschlaeger mit einer Bibliothek ist in
jedem Fall mal eine gute Idee. Wenn ich anstelle des JBuilder
das Standard JDK1.3.1 auf dem CommandPrompt verwende ist
alles in Ordnung. Allerdings ist auch dort JAXB im Verzeichnis
jre/lib/ext installiert.
Stefan Podkowinski schrieb:
Stefan Podkowinski schrieb: