Skip to main content

Java-Klassen in Templates/Skripten verwenden im isolated-Modus

Comments

4 comments

  • Zendesk API User
    Author: tfuchs - 5/7/2020 15:18

    Ich merke gerade, in der Vorschau wird beides prima ausgeführt. Nur bei der Generierung leider nicht.

    0
  • Zendesk API User
    Author: tfuchs - 5/7/2020 15:48

    Der Vollständigkeit halber: Bei der Generierung kommen die folgenden Fehlermeldungen:

    ERROR 07.05.2020 13:55:13.372{g-node=249780} (de.espirit.firstspirit.generate.SiteProduction): java.lang.ClassNotFoundException: de.pinuts.XXXX.firstspirit.json.mediagallery.MediaGallery

    Bzw.

    ERROR 07.05.2020 13:02:43.037{g-sec=253386,g-node=249780,g-entity=Products(8896)} (de.espirit.firstspirit.generate.SiteProduction): java.lang.ClassNotFoundException: org.json.simple.parser.JSONParser

    0
  • Zendesk API User
    Author: tfuchs - 5/11/2020 7:07

    Die Antwort scheint wohl zu sein, dass im Modul der Scope der Bibliothek auf "server" gestellt sein muss, also:

    <resource name="com.googlecode.json-simple:json-simple" scope="server" mode="isolated" version="1.1.1" minVersion="1.1.1">lib/json-simple-1.1.1.jar</resource>

    Ich verwende das FSM-Gradle-Plugin, dort habe ich es entsprechend in der build.gradle definiert:

    fsServerCompile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'

    Die Klasse MediaGallery kommt aber aus meinem Modul selbst, weiss jemand, wie man dafür definiert, dass der scope=server ist? Der Eintrag in der module.xml sieht ja so aus und wird vom gradle-Modul erstellt.

    <resource name="de.pinuts.XXX.firstspirit:XXXUtils" version="4.0.2" scope="module" mode="isolated">lib/XXXUtils-4.0.2.jar</resource>

    0
  • Zendesk API User
    Author: tfuchs - 5/11/2020 9:13

    So, ich habe nun auch das letzte Problem gelöst.

    Das gradle Plugin definiert den Scope für die selbst erstellte Bibliothek pauschal immer als "module". Wenn man nun Teile seiner Funktionen als scope=server haben will, dann muss man:

    1. Neues Subproject (in meinem Fall XXXPublicUtils) in gradle erstellen

    2. Die Funktionen, die für scope=server benötigt werden, dorthin verschieben, in meinem Fall habe ich einfach das Paket de.pinuts.XXXX.firstspirit.json, in dem sich mein MediaGallery-Gedöns befindet komplett in dieses Subproject verschoben.

    3. Das Subproject dann per fsServerCompile in der build.gradle in die Dependencies laden.

    fsServerCompile project(':XXXPublicUtils')

    0

Please sign in to leave a comment.