- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Service, NoClassDefFoundError
Hallo zusammen,
ich schreibe gerade an einem Service der mir Daten aus einer Datenbank zurรผckliefern soll. Den Service selbst hab ich in FirstSpirit zum laufen bekommen, liefert mir aktuell auch schon fleiรig Log-Ausgaben. Wenn ich jetzt allerdings versuche in meinem Service Klassen zu verwenden die aus einem jar stammen das am FirstSpirit Server abgelegt wurde, bekomme ich im SiteArchitect folgenden Fehler:
de/meinelib/basis/IdException
FSVersion=5.1.410.67084#3587;JDK=1.8.0_51 32bit Oracle Corporation;OS=Windows 7 6.1 x86;Date=20.08.2015 18:43:51
java.lang.NoClassDefFoundError: de/meinelib/basis/IdException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetPublicMethods(Unknown Source)
at java.lang.Class.getMethods(Unknown Source)
at sun.misc.ProxyGenerator.generateClassFile(Unknown Source)
at sun.misc.ProxyGenerator.generateProxyClass(Unknown Source)
at java.lang.reflect.Proxy$ProxyClassFactory.apply(Unknown Source)
at java.lang.reflect.Proxy$ProxyClassFactory.apply(Unknown Source)
at java.lang.reflect.WeakCache$Factory.get(Unknown Source)
Ich benutze die Klassen aus dem jar bereits an anderer Stelle in FS, wo sie auch funktioniert, aber irgendwie kann mein Service sie nicht finden.
Im Service:
import de.meinelib.basis.IdException
module.xml:
<library>
<ame>Tests</name>
<description>Test Module Library</description>
<resources>
<resource>lib/test.jar</resource>
< /resources>
</library>
<service>
<name>DbService</name>
<description>Liefert Datenbankinhalte aus.</description>
<class>de.test.service.DbServiceImpl</class>
</service>
...
Hat jemand eine Idee woran das liegen kรถnnte?
Ich habe hier FS 5.1 im Einsatz, falls das relevant ist.
Viele Grรผรe
Alex
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo zusammen,
war ein doofer Fehler.
Die Klasse ist am Server im java.class.path hinterlegt, dadurch kann ich sie auch am Server verwenden. Ich hatte die Klasse in einem ServiceProxy verwendet, der ja am Client ausgefรผhrt wird, wo die Klasse natรผrlich nicht verfรผgbar ist.
Die Lรถsung war also relativ einfach, die Klasse aus dem ServiceProxy in den ServiceImpl verschieben.
Ein schรถnes Wochenende
Alex
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Alex,
hast du es schonmal mit der Angabe eines Scopes in der module.xml versucht? Die Komponente mit den Klassen, die du verwenden mรถchtest, den Scope "public" zu geben kรถnnte evtl. schon Abhilfe schaffen. (Siehe "2.5.1.2 Gรผltigkeitsbereich" in der Doku fรผr Komponenten-Entwickler)
Ich glaube mich daran erinnern zu kรถnnen, dass ich ohne bzw. mit falschem Scope einmal รคhnliche Probleme hatte.
Hier ein Beispiel einer meiner module.xml Files.
<module>
<name>bridgingIT - ${project.parent.artifactId}</name>
<version>${fs.version}_${project.version}</version>
<description></description>
<vendor>BridgingIT GmbH</vendor>
<components>
<!-- Add FirstSpirit components and their configurations -->
<service>
<name>${project.parent.artifactId} - name service</name>
<description>Service</description>
<class>de.bit.fs5.name.NameService/class>
<resources>
<resource name="Name - service" scope="server">lib/name-service-${project.version}.jar</resource>
</resources>
</service>
<public>
<name>${project.parent.artifactId} - executable</name>
<description>Executable to start the process</description>
<class>de.bit.fs5.name.NameExecutable</class>
</public>
<library>
<name>${project.parent.artifactId} - dependencies</name>
<description>Contains all dependencies that are needed by other
components of this module.</description>
<resources>
<resource name="Name - dependencies" scope="server">lib/name-dependencies-${project.version}.jar</resource>
</resources>
</library>
</components>
</module>
Evtl. hilft dir das ja schon weiter.
Beste Grรผรe
Sandro
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Sandro,
danke fรผr den Tipp. Soweit ich das sehen kann haben library und service sowieso standardmรครig den scrope server. Habs trotzdem mal gesetzt, leider ohne Erfolg.
Das jar das ich versuche zu benutzen liegt aber nicht mit in meinem test.jar, sondern zentral am Server - wurde da hรคndisch abgelegt. Das jar wurde hier abgelegt: /opt/web/shared/test/meinelib.jar
Aus irgendeinem Grund findet der Service aber die Klasse nicht. Wird beim Service ein anderer ClassLoader benutzt als z. B. bei Executables oder anderen Java-Klassen die in FS aufgerufen werden?
Caused by: java.lang.ClassNotFoundException: de.meinelib.basis.IdException
at java.net.URLClassLoader.findClass(Unknown Source)
....
Viele Grรผรe
Alex
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Der Pfad ist nicht der Standard-Lib-Pfad des FirstSpirit-Servers. Wieso meinst du, das der von FirstSpirit aus sichtbar ist?
Z.B. รผber jconsole oder VisualVM kannst du dir den effektiven Klassenpfad des Server anschauen.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo zusammen,
war ein doofer Fehler.
Die Klasse ist am Server im java.class.path hinterlegt, dadurch kann ich sie auch am Server verwenden. Ich hatte die Klasse in einem ServiceProxy verwendet, der ja am Client ausgefรผhrt wird, wo die Klasse natรผrlich nicht verfรผgbar ist.
Die Lรถsung war also relativ einfach, die Klasse aus dem ServiceProxy in den ServiceImpl verschieben.
Ein schรถnes Wochenende
Alex

