# Problem mit Synth Painter und OSGi (Equinox)



## DayWalker (21. Apr 2008)

Hallöchen,

ich habe mir ein kleines Equinox Bundle geschrieben welches das Design aus einer Synth XML Datei bezieht. In der Datei habe ich einen einfachen Painter definiert, welcher auf eine bestimmte Java Klasse verweist:


```
<object id="splitPanePainter" class="de.test.painters.SplitPanePainter"/>
    <style id="SplitPane">
        <painter idref="splitPanePainter"/>
        <color value="#AAAAAA" type="BACKGROUND"/>
        <insets top="0" left="0" bottom="0" right="0"/>
        <property key="SplitPane.size" type="integer" value="8"/>
    </style>
    <bind style="SplitPane" type="region" key="SplitPane"/>
```

Wenn ich das Plugin aus der Eclipse IDE starte, funktioniert alles wunderbar. Wenn ich das Equinox Framework extern mit 
	
	
	
	





```
java -Declipse.ignoreApp=true -Dosgi.noShutdown=false -jar equin
ox.jar -os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -
console
```
 starte erhalte ich immer folgende Fehlermeldung:


```
java.text.ParseException: Error parsing: org.xml.sax.SAXException: ID splitPaneP
ainter has not been defined null
        at javax.swing.plaf.synth.SynthParser.parse(Unknown Source)
```

Gibt's da ne Lösung für?

Gruß

DayWalker


----------



## DayWalker (21. Apr 2008)

OK, bin weiter gekommen.

Es lag daran, dass ich in der Painterklasse ein Bild mit Hilfe der *javax.imageio.ImageIO* Klasse reinladen wollte und er die ImageIO Klasse nicht finden kann. Aber obwohl ich das Package "javax.imageio" bei "Import-Package:" in meiner Manifest Datei definiert habe, erhalte ich immer wieder eine "*java.lang.NoClassDefFoundError: Could not initialize class javax.imageio.ImageIO*" Exception.

Einer eine Idee warum das so ist?


----------



## Wildcard (21. Apr 2008)

Sagt die Exception noch mehr? Mit welcher Java Version startest du das?
*verschieb*


----------



## DayWalker (21. Apr 2008)

Ich nutze:


```
java version "1.6.0_10-beta"
Java(TM) SE Runtime Environment (build 1.6.0_10-beta-b13)
Java HotSpot(TM) Client VM (build 11.0-b11, mixed mode, sharing)
```

starten tue ich das Equinox auf diese Weise:

*java -Declipse.ignoreApp=true -Dosgi.noShutdown=true -jar equinox.jar -console*



Hier mal der komplette Stacktrace:


```
org.osgi.framework.BundleException: Exception in testplugin.Activator.start() of
 bundle TestPlugin.
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActiv
ator(BundleContextImpl.java:1018)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(Bund
leContextImpl.java:974)
        at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(Bundl
eHost.java:346)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(Abstrac
tBundle.java:260)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(Abstrac
tBundle.java:252)
        at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._st
art(FrameworkCommandProvider.java:260)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.
execute(FrameworkCommandInterpreter.java:150)
        at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(F
rameworkConsole.java:300)
        at org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(Fra
meworkConsole.java:285)
        at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(Framewo
rkConsole.java:221)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class javax.imag
eio.ImageIO
        at testplugin.Activator.start(Activator.java:16)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(Bund
leContextImpl.java:999)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActiv
ator(BundleContextImpl.java:993)
        ... 14 more
Nested Exception:
java.lang.NoClassDefFoundError: Could not initialize class javax.imageio.ImageIO

        at testplugin.Activator.start(Activator.java:16)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(Bund
leContextImpl.java:999)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActiv
ator(BundleContextImpl.java:993)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(Bund
leContextImpl.java:974)
        at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(Bundl
eHost.java:346)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(Abstrac
tBundle.java:260)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(Abstrac
tBundle.java:252)
        at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._st
art(FrameworkCommandProvider.java:260)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.
execute(FrameworkCommandInterpreter.java:150)
        at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(F
rameworkConsole.java:300)
        at org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(Fra
meworkConsole.java:285)
        at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(Framewo
rkConsole.java:221)
        at java.lang.Thread.run(Unknown Source)
Nested Exception:
java.lang.NoClassDefFoundError: Could not initialize class javax.imageio.ImageIO

        at testplugin.Activator.start(Activator.java:16)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(Bund
leContextImpl.java:999)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActiv
ator(BundleContextImpl.java:993)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(Bund
leContextImpl.java:974)
        at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(Bundl
eHost.java:346)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(Abstrac
tBundle.java:260)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(Abstrac
tBundle.java:252)
        at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._st
art(FrameworkCommandProvider.java:260)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.
execute(FrameworkCommandInterpreter.java:150)
        at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(F
rameworkConsole.java:300)
        at org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(Fra
meworkConsole.java:285)
        at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(Framewo
rkConsole.java:221)
        at java.lang.Thread.run(Unknown Source)

osgi> ss

Framework is launched.

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.3.2.R33x_v20080105
2       RESOLVED    client_base_1.0.0
3       RESOLVED    TestPlugin_1.0.0

osgi> diag 3
file:plugins/TestPlugin_1.0.0.jar [3]
  No unresolved constraints.
```


----------



## DayWalker (21. Apr 2008)

Ich habe das Plugin mal hochgeladen. Der Sourcecode ist auch drin:

http://mitglied.lycos.de/typosdw/TestPlugin_1.0.0.jar


----------



## Wildcard (21. Apr 2008)

Ich werde versuchen dein PlugIn nach der Arbeit auszuprobieren, aber bis dahin:
ein Beta-Java ist vielleicht nicht die ideale Umgebung.


----------



## Guest (21. Apr 2008)

Wildcard hat gesagt.:
			
		

> Ich werde versuchen dein PlugIn nach der Arbeit auszuprobieren, aber bis dahin:
> ein Beta-Java ist vielleicht nicht die ideale Umgebung.



Ja, da hast du schon recht, aber ich habe es auch mal mit einer "Nichtbeta" probiert und erhalte leider den gleichen Fehler


----------



## DayWalker (22. Apr 2008)

Hi Wildcard, hast du den Quellcode ausprobieren können? Vielleicht gibt es da ein Problem mit dem ClassLoader?


----------



## Wildcard (5. Mai 2008)

Den Thread hab ich ehrlich gesagt vergessen....  :? 
Ist das Problem noch akut?


----------

