Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder() wirft Exception

0 views
Skip to first unread message

Hans Georg Frey

unread,
Nov 14, 2001, 12:18:47 PM11/14/01
to
Hallo,

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

Stefan Podkowinski

unread,
Nov 14, 2001, 12:53:44 PM11/14/01
to
Hallo

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

Hans Georg Frey

unread,
Nov 14, 2001, 1:12:27 PM11/14/01
to Stefan Podkowinski
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.

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

unread,
Nov 14, 2001, 1:45:36 PM11/14/01
to
Das Problem haengt offensichtlich mit meinem JBuilder
zusammen. Wenn ich alles auf dem CommandPrompt laufen
lasse ist alles fein.

Hans Georg Frey schrieb:

Stefan Podkowinski

unread,
Nov 14, 2001, 1:53:24 PM11/14/01
to
Hallo

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

Hans Georg Frey

unread,
Nov 14, 2001, 2:01:49 PM11/14/01
to Stefan Podkowinski
Das JDK ist 1.3.0. Ich habe in meinem lib/ext die
Pakete zu JAXB stehen. Das JAXB hat auch
alles wunderbar funktioniert.

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:

Hans Georg Frey

unread,
Nov 14, 2001, 5:27:11 PM11/14/01
to Stefan Podkowinski
Wenn ich JAXP verwende, das mit dem JBuilder
ausgeliefert wird, geht alles. Jetzt muss ich noch
kontrollieren, ob mein Xerces wieder laeuft, wenn
cih JAXB rausnehme. Wenn ich recht habe und die
beiden Dinge sich beissen, waere das weniger schoen,
denn Xerces ist doch sehr weit verbreitet!

Stefan Podkowinski schrieb:

0 new messages