Page tree
Skip to end of metadata
Go to start of metadata


Lernziel
In diesem Tutorial lernen Sie, wie Sie ein Nuclos-Projekt in die Entwicklungsumgebung IntelliJ IDEA einbinden.
Voraussetzungen
Sonstiges
  • Troubleshooting


Draft
marked by Max Dieckmann on Jun 12, 2019 12:07

Dokumentenstatus



Unter Windows muss Git für lange Dateinamen konfiguriert werden:

git config --system core.longpaths true



Bevor Sie mit der Konfiguration von IDEA beginnen, müssen Sie sowohl das git-Repository des Projekts (im folgenden Projekt-git), als auch das git-Repository des Nuclos-Kerns (im folgenden Kern-git) klonen.

Wechseln Sie nun im git zu dem Tag des Kerns, welcher der Nuclos-Version der Projekt-Installation entspricht (git checkout).


Nun sind Sie bereit, die Konfiguration von IDEA anzugehen.

Richten Sie maven ein: File -> Settings -> Build, Execution, Deployment -> Build Tools -> Maven

Öffnen Sie das Projekt (Projekt-git) in IDEA: File -> Open...

Importieren Sie das Maven Projekt (ein Popup sollte erscheinen).

Lassen Sie Maven die Quellen generieren.

Bauen Sie das Modul.

Nun kann der Kern-git eingebunden werden. Öffnen Sie zu diesem Zweck die Modul-Einstellungen:

Hier kann der Kern-git importiert werden (Import Module):

Einige Sourcen werden in Nuclos generiert und sind nicht im Git eingecheckt.

Über:

"nuclos-schema" > rechte Maustaste > Maven > Generate Sources and Update Folders 

werden die Sourcen generiert.

Sobald das Modul geladen ist, navigieren Sie ins Verzeichnis /[Pfad zu Kern-git]/nuclos-war/src/main/webapp/META-INF/.

Hier finden sie eine Datei context-template.xml - Erstellen Sie eine Kopie der Datei im selben Verzeichnis und nennen Sie diese context.xml.

Passen Sie nun die vier value-Parameter (von context.xml) an, so dass diese auf die entsprechenden Konfigurationsdateien zeigen, die sich im Verzeichnis ihres installierten Nuclos-Projekts (Projekt-Installation) befinden.

Nun können Sie auch für den Kern die Quellen mit Maven importieren und das Modul bauen.

Anmerkung: Falls es im Extension-Projekt eine extension-war gibt, hat es sich bewährt, die context.xml dort zu erstellen. also im Verzeichnis /[Pfad zu Project-git]/<extension>-war/src/main/webapp/META-INF/.
 

Um den Server einzurichten, gehen Sie auf Run -> Edit Configurations... :

 
 Erstellen Sie einen neuen Tomcat-Server:
 
 

Konfigurieren Sie diesen:

Application Serverdas Tomcat-Verzeichnis von Projekt-Installation (z.B.: /[Pfad zum Projekt]/nuclos/tomcat/apache-tomcat-7.0.72)
VM Options-Dfunctionblock.dev=true -mx1024m
Deploy at server startup

Add -> Artifact... -> nuclos-war-exploded

(oder falls ein extension-war existiert, natürlich extenstion-war-exploded)

Application context/nuclos-war

Unter Umständen müssen noch die Ausführungsrechte der Tomcat-Start-Scripte gesetzt werden, z.B.:

chmod u+x apache-tomcat-..../*.sh

 

In manchen Fällen wird context.xml beim Deployment nicht in das target-Verzeichnis übernommen.

In diesem Fall hilft es die Datei context.xml unter

File > Project Structure... > Project Settings > Artifacts > Output Layout > META-INF

hinzuzufügen.

Wenn das Projekt über server-extensions verfügt und/oder auf einer Oracle-Datenbank basiert, ist ein weiterer Schritt notwendig:

Die ojdb6.jar (Oracle.db) und alle .jar - Extensions ([Pfad zu Projekt-Installation]/extensions/server bzw. [Pfad zu Projekt-Installation]/extensions/common) müssen ins Tomcat-lib-Verzeichnis kopiert werden (/[Pfad zu Projekt-Installation]/tomcat/apache-tomcat-7.0.72/lib).


Der Server kann jetzt gestartet werden.


Abschließend muss noch der Client erstellt werden:


Konfiguration des Clients:

Main classorg.nuclos.client.main.Nuclos
VM options (Port muss ggf. angepasst werden)

-ea
-Xmx768m
-Dserver=http://localhost:8080/nuclos-war
-Dfunctionblock.dev=true
-Dsun.awt.disablegrab=true

Use classpath of modulenuclos-client

Troubleshooting

IntelliJ erkennt /[Pfad zu Projekt-Installation]/tomcat/apache-tomcat-9.x nicht als Tomcat-Home an.Die entsprechende Tomcat-Version muss manuell installiert werden. Hier eine Beispielanleitung: https://medium.com/@dolthead/upgrade-intellij-idea-to-tomcat-9-0-8-d2a560606231

Das Projekt wird gebaut, aber der Server startet nicht mit der Meldung:

"SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:file:/sahibinden/repo/services/sahibinden-web/target/sahibinden-web/WEB-INF/lib/classgraph-4.6.7.jar!/] for annotations org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19"

Es handelt sich um einen Bug mit der Kombination aus Tomcat - und Java - Version (https://github.com/classgraph/classgraph/issues/291).
Die neueste JDK 8 benötigt z.B. Tomcat 9.
Localhost:8080 is already in use.Es läuft bereits ein Programm auf dem Port 8080. Dieses passiert z.B. in Ubuntu, wenn man Tomcat aus den Paketquellen installiert und nicht manuell abschaltet.
Weitere Gründe für das Scheitern des Server-StartsDas in der Projekt-Installation angegebene Schema muss in der Datenbank existieren (es kann aber leer sein).
  • No labels