Verbesserung
Top-Thema
Detail
Wichtig
Detail
Exception in thread "main" java.lang.RuntimeException: Building dependencies of project failed: /home/bhu/devel/workspace-toplogic-studio/com.top_logic.graph.diagramjs.server at com.top_logic.basic.core.workspace.Workspace.buildDependencies(Workspace.java:617) at com.top_logic.basic.core.workspace.Workspace.getDirectDependencies(Workspace.java:195) at com.top_logic.basic.core.workspace.Workspace.fillTransitiveDependencies(Workspace.java:596) at com.top_logic.basic.core.workspace.Workspace.fillTransitiveDependencies(Workspace.java:605) at com.top_logic.basic.core.workspace.Workspace.getTransitiveDependencies(Workspace.java:177) at com.top_logic.basic.core.workspace.Workspace.getResourcePath(Workspace.java:117) at com.top_logic.basic.core.workspace.Workspace.getResourcePath(Workspace.java:87) at com.top_logic.ide.jetty.Bootstrap.start(Bootstrap.java:109) at com.top_logic.ide.jetty.Bootstrap.run(Bootstrap.java:93) at com.top_logic.ide.jetty.Bootstrap.main(Bootstrap.java:66) Caused by: java.io.IOException: Cannot resolve project dir for 'com.top_logic.graph.diagramjs.client': '/home/bhu/devel/workspace-toplogic-studio' is neither an Eclipse workspace nor does it have a subfolder 'com.top_logic.graph.diagramjs.client'. at com.top_logic.basic.core.workspace.Workspace.resolveProjectDir(Workspace.java:213) at com.top_logic.basic.core.workspace.Workspace.tryBuildDependencies(Workspace.java:650) at com.top_logic.basic.core.workspace.Workspace.buildDependencies(Workspace.java:615) ... 9 more
Workaround
- Entfernen der Projektabhängigkeit com.top_logic.graph.diagramjs.client aus dem Modul com.top_logic.graph.diagramjs.server.
Analyse
GWT-Modul werden von ihren Server-Modulen nicht als Classpath-Abhängigkeit sondern als Projektreferenz referenziert. Das geschieht, damit die GWT-Module vor ihren Server-Modulen gebaut werden, damit das resultierende JavaScript von dem Server-Modul ausgeliefert werden kann. GWT-Module werden aber nicht in das TL-Studio eingepackt, da sie für die Entwicklung nicht mehr benötigt werden. Andererseits werden aber Projektabhängigkeiten genutzt, um den Resource-Path eines Module zu bestimmen. Das wiederum ist notwendig, damit reine JavaScript-Projekte eine Anwendungskonfiguration mitliefern können, in dem sie ihre JavaScript-Dateien in die Anwendungskonfiguration mit einbinden. Hierfür benötigen sie eine Abhängigkeit zu tl-core, das erst tl-core die entsprechenden Konfigurations-Interfaces bereitstellt.
Lösung
Projektabhängigkeiten werden zur Laufzeit nur als optionale Abhängigkeiten betrachtet. Sind sie vorhanden, werden sie in den Resource-Path mit aufgenommen. Sind sie nicht vorhanden, werden sie ignoriert.
Test
- In tl-studio das Modul tl-demo in Eclipse starten.
- Aus tl-studio ein WAR von tl-demo bauen.