Search the FirstSpirit Knowledge Base
Hallo,
irgendie steh ich gerade auf dem Schlauch. Kann jemand anhand das folgenden Codeschnippsel sagen, warum beim Aufrufen von data.getFormData(); nichts passiert und direct in den finally Zweig gesprungen wird?
Danke
public class TestSync {
public static void main(String... args)
throws MaximumNumberOfSessionsExceededException, IOException,
AuthenticationException {
Connection con = ConnectionManager.getConnection("SERVER", 8000,ConnectionManager.HTTP_MODE, "USER", "PASSWORT");
Content2 cont =null;
try {
con.connect();
Project pr = con.getProjectByName("Mithras Energy");
UserService us = pr.getUserService();
Language lang = pr.getMasterLanguage();
ContentStoreRoot rt = (ContentStoreRoot) us.getStore(Store.Type.CONTENTSTORE, false);
cont = rt.getContent2ByName("pressreleases");
List<? extends Entity>currendData =cont.getData();
for (Entity press:currendData) {
Dataset data = cont.getDataset(press);
FormData formData = data.getFormData();
}
}catch (Exception e)
{
e.printStackTrace();
}finally
{
con.disconnect();
}
}
}
Alle System.out-Aufrufe vor dem getFormData-Call landen sehr wohl in der Konsole.
Und System.err - Aufrufe auch?
Jetzt noch die Ausgaben auf der Konsole, bitte
== Inhalt console.txt ==
Verbindung hergestellt
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/Multimap
at de.espirit.firstspirit.client.GadgetComponentServiceImpl.reload(GadgetComponentServiceImpl.java:60)
at de.espirit.firstspirit.client.GadgetComponentServiceImpl.<init>(GadgetComponentServiceImpl.java:38)
at de.espirit.firstspirit.server.io.AbstractServerConnection$2.invoke(AbstractServerConnection.java:623)
at de.espirit.firstspirit.server.io.AbstractServerConnection$2.invoke(AbstractServerConnection.java:622)
at de.espirit.common.function.CachingGenerator$Factory$HardCachingGenerator.invoke(CachingGenerator.java:72)
at de.espirit.common.util.ConcurrentTypeGeneratorMap.generate(ConcurrentTypeGeneratorMap.java:40)
at de.espirit.firstspirit.server.io.AbstractServerConnection.getService(AbstractServerConnection.java:547)
at de.espirit.firstspirit.client.io.ProjectConnection.getService(ProjectConnection.java:114)
at de.espirit.firstspirit.agency.ServicesBrokerImpl.getService(ServicesBrokerImpl.java:30)
at de.espirit.firstspirit.access.store.templatestore.gom.GomUtil.getGomElementMappings(GomUtil.java:38)
at de.espirit.firstspirit.access.store.templatestore.gom.GomModule.getGomElementMappings(GomModule.java:367)
at de.espirit.firstspirit.access.store.templatestore.gom.GomHandler$MetaElement.getElements(GomHandler.java:458)
at de.espirit.firstspirit.access.store.templatestore.gom.GomHandler$MetaElement.getElement(GomHandler.java:487)
at de.espirit.firstspirit.access.store.templatestore.gom.GomParser.parseTag(GomParser.java:338)
at de.espirit.firstspirit.access.store.templatestore.gom.GomParser.parseChilds(GomParser.java:284)
at de.espirit.firstspirit.access.store.templatestore.gom.GomParser.parseElement(GomParser.java:190)
at de.espirit.firstspirit.access.store.templatestore.gom.GomParser.parseGomElement(GomParser.java:114)
at de.espirit.firstspirit.access.store.templatestore.gom.GomParser.parseModule(GomParser.java:97)
at de.espirit.firstspirit.store.access.templatestore.TemplateImpl.updateGomProvider(TemplateImpl.java:411)
at de.espirit.firstspirit.store.access.templatestore.TemplateImpl.getGomProvider(TemplateImpl.java:384)
at de.espirit.firstspirit.store.access.templatestore.TemplateImpl.getGomProvider(TemplateImpl.java:377)
at de.espirit.firstspirit.store.access.contentstore.ContentUtil.fetchData(ContentUtil.java:109)
at de.espirit.firstspirit.store.access.contentstore.ContentUtil.nFetchData(ContentUtil.java:203)
at de.espirit.firstspirit.store.access.contentstore.DatasetImpl.getData(DatasetImpl.java:203)
at de.espirit.firstspirit.access.store.contentstore.gom.list.EntityFormData.<init>(EntityFormData.java:44)
at de.espirit.firstspirit.store.access.contentstore.DatasetImpl.getFormData(DatasetImpl.java:192)
at [entspricht der Zeile mit dem Aufruf "FormData formData = data.getFormData();"]
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.Multimap
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 27 more
Damit wäre die initiale Frage:
warum beim Aufrufen von data.getFormData(); nichts passiert und direct in den finally Zweig gesprungen wird?
dann ja auch beantwortet:
Es passiert sehr wohl was. Es fliegt nämlich ein Error. Konkret ein java.lang.NoClassDefFoundError. Wie weiter oben schon vermutet, also ein Fehler, der vom ihrem catch-Block nicht gefangen wird.
Hätte dieser Stacktrace im Initial-Posting gestanden, hätte uns das einiges an Zeit erspart.
Bleibt also zu klären, warum dieser Fehler auftritt.
Welche FirstSpirit-Version setzten Sie denn ein?
Wir setzen Version 4.2.468.50982 ein.
Martin Kalbacher schrieb:
Wir setzen Version 4.2.468.50982 ein.
ok, wie sieht denn Ihr Classpath zum Ausführungszeitpunkt dieser "Main"-Klasse aus? Welches FirstSpirit-Jar-Archiv haben Sie im Classpath? das fs-access.jar?
Das sind die classpath-Einträge:
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="lib" path="[Pfad zur fs-access.jar (lokal auf der Festplatte)]" sourcepath="[Pfad zur fs-access.jar (lokal auf der Festplatte)]"/>
<classpathentry kind="output" path="bin"/>
...als Workaround reicht es vermutlich wenn Sie dieses Jar in den Classpath legen. Das Problem wird bei uns unter der Internen ID#123582 behandelt.
Super, vielen Dank! Der vorgeschlagene Workaround mit dem zusätzlichen guava-13.0.jar funktioniert.