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
- Remove project dependency com.top_logic.graph.diagramjs.client from module com.top_logic.graph.diagramjs.server.
Analysis
GWT module are referenced by their server modules not as classpath dependency but as project reference. This is done so that GWT modules are built before their server modules so that the resulting JavaScript can be delivered by the server module. GWT modules are not wrapped in TL Studio, however, because they are no longer needed for development. On the other hand, however, project dependencies are used to determine the resource path of a module. This in turn is necessary so that pure JavaScript projects can provide an application configuration by including their JavaScript files in the application configuration. For this they need a dependency to tl-core, which first provides tl-core with the corresponding configuration interfaces.
Solution
Project dependencies are only considered as optional dependencies at runtime. If they are present, they are included in the resource path. If they are not present, they are ignored.
Test
- In tl-studio start the module tl-demo in Eclipse.
- Build a WAR of tl-demo from tl-studio.