kalbacher
I'm new here

API Access und data.getFormData() Aufruf

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();

            }

        }

}

0 Kudos
19 Replies
gockel
Crownpeak employee

Alle System.out-Aufrufe vor dem getFormData-Call landen sehr wohl in der Konsole.

Und System.err - Aufrufe auch?

0 Kudos

System.err-Aufrufe werden ebenfalls nicht umgeleitet.

Zum besseren Verständnis habe ich unsere Testklasse (AppTest.java) angehängt.

0 Kudos
gockel
Crownpeak employee

Jetzt noch die Ausgaben auf der Konsole, bitte Smiley Happy

0 Kudos

Anbei die Konsolen-Ausgabe in der Datei 'console.txt'.

0 Kudos
gockel
Crownpeak employee

== 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?

0 Kudos

Wir setzen Version 4.2.468.50982 ein.

0 Kudos

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?

0 Kudos

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"/>

0 Kudos

...als Workaround reicht es vermutlich wenn Sie dieses Jar in den Classpath legen. Das Problem wird bei uns unter der Internen ID#123582 behandelt.

0 Kudos

Super, vielen Dank! Der vorgeschlagene Workaround mit dem zusätzlichen guava-13.0.jar funktioniert.

0 Kudos