defect
tl:XMain-based tools no longer start since the switch to Maven.
Analysis
tl:XMain attempts to read the required projects from Eclipse’s .classpath file. However, since the switch to Maven, the required projects are now listed in the Maven dependencies. As a result, they cannot be found, and the startup ultimately fails.
Stack trace
Example: ZooKeeper:
Mar 23, 2022 3:27:45 PM com.top_logic.basic.core.log.JavaLoggingLog info
INFORMATION: Analyzing 'C:\Users\jst.BOS\Desktop\eclipse\workspaces\tl_trunk_7\com.top_logic.kafka.server'.
2022-03-23 15:31:00.670 ERROR: top_logic.basic.config.ApplicationConfig - Configuration descriptor 'com.top_logic.basic.module.ManagedClass$ServiceConfiguration' has no 'static-bundles' property; valid properties are: [class, configuration-interface, dependencies] at file:///WEB-INF/conf/topLogicKafkaServerConf.config.xml%20(C:/Users/jst.BOS/Desktop/eclipse/workspaces/tl_trunk_7/com.top_logic.kafka.server/src/main/webapp/WEB-INF/conf/topLogicKafkaServerConf.config.xml) line 16, column 21 at file:///WEB-INF/conf/topLogicKafkaServerConf.config.xml%20(C:/Users/jst.BOS/Desktop/eclipse/workspaces/tl_trunk_7/com.top_logic.kafka.server/src/main/webapp/WEB-INF/conf/topLogicKafkaServerConf.config.xml) line 16, column 21.
com.top_logic.basic.thread.StackTrace: The configuration descriptor 'com.top_logic.basic.module.ManagedClass$ServiceConfiguration' has no 'static-bundles' property; valid properties are: [class, configuration-interface, dependencies] at file:///WEB-INF/conf/topLogicKafkaServerConf.config.xml%20(C:/Users/jst.BOS/Desktop/eclipse/workspaces/tl_trunk_7/com.top_logic.kafka.server/src/main/webapp/WEB-INF/conf/topLogicKafkaServerConf.config.xml) line 16, column 21 at file:///WEB-INF/conf/topLogicKafkaServerConf.config.xml%20(C:/Users/jst.BOS/Desktop/eclipse/workspaces/tl_trunk_7/com.top_logic.kafka.server/src/main/webapp/WEB-INF/conf/topLogicKafkaServerConf.config.xml) line 16, column 21.
at com.top_logic.basic.AbstractProtocol.makeStackTrace(AbstractProtocol.java:67)
at com.top_logic.basic.AbstractProtocol.localError(AbstractProtocol.java:73)
at com.top_logic.basic.AbstractProtocol.localError(AbstractProtocol.java:52)
at com.top_logic.basic.ProtocolChain.error(ProtocolChain.java:92)
at com.top_logic.basic.LogAdaptor.error(LogAdaptor.java:16)
at com.top_logic.basic.config.InstantiationContextImpl.error(InstantiationContextImpl.java:59)
at com.top_logic.basic.LogAdaptor.error(LogAdaptor.java:16)
at com.top_logic.basic.MessageEnhancingLog.error(MessageEnhancingLog.java:17)
at com.top_logic.basic.LogAdaptor.error(LogAdaptor.java:16)
at com.top_logic.basic.config.InstantiationContextImpl.error(InstantiationContextImpl.java:59)
at com.top_logic.basic.config.InstantiationContextAdaptor.error(InstantiationContextAdaptor.java:80)
at com.top_logic.basic.config.ConfigurationReader$Handler.errorNoSuchProperty(ConfigurationReader.java:561)
at com.top_logic.basic.config.ConfigurationReader$Handler.readContents(ConfigurationReader.java:516)
at com.top_logic.basic.config.ConfigurationReader$Handler.readNextElement(ConfigurationReader.java:205)
at com.top_logic.basic.config.ConfigurationReader$Handler.readConfigurationItem(ConfigurationReader.java:1317)
at com.top_logic.basic.config.ConfigurationReader$Handler.readItemConfig(ConfigurationReader.java:1086)
at com.top_logic.basic.config.ConfigurationReader$Handler.readItemConfig(ConfigurationReader.java:752)
at com.top_logic.basic.config.ConfigurationReader$Handler.readElementValue(ConfigurationReader.java:654)
at com.top_logic.basic.config.ConfigurationReader$Handler.readContents(ConfigurationReader.java:522)
at com.top_logic.basic.config.ConfigurationReader$Handler.readNextElement(ConfigurationReader.java:205)
at com.top_logic.basic.config.ConfigurationReader$Handler.readConfigurationItem(ConfigurationReader.java:1317)
at com.top_logic.basic.config.ConfigurationReader$Handler.handleMapAdd(ConfigurationReader.java:1156)
at com.top_logic.basic.config.ConfigurationReader$Handler.readMapEntry(ConfigurationReader.java:802)
at com.top_logic.basic.config.ConfigurationReader$Handler.readElementValue(ConfigurationReader.java:673)
at com.top_logic.basic.config.ConfigurationReader$Handler.readContents(ConfigurationReader.java:522)
at com.top_logic.basic.config.ConfigurationReader$Handler.readNextElement(ConfigurationReader.java:205)
at com.top_logic.basic.config.ConfigurationReader$Handler.readConfigurationItem(ConfigurationReader.java:1317)
at com.top_logic.basic.config.ConfigurationReader$Handler.parseContents(ConfigurationReader.java:167)
at com.top_logic.basic.config.ConfigurationReader$Handler.parse(ConfigurationReader.java:112)
at com.top_logic.basic.config.ConfigurationReader.parseAndClose(ConfigurationReader.java:2097)
at com.top_logic.basic.config.ConfigurationReader.readInternal(ConfigurationReader.java:2077)
at com.top_logic.basic.config.ConfigurationReader.readInternal(ConfigurationReader.java:2060)
at com.top_logic.basic.config.ConfigurationReader.read(ConfigurationReader.java:2043)
at com.top_logic.basic.config.ConfigurationReader.read(ConfigurationReader.java:2005)
at com.top_logic.basic.config.ApplicationConfig$Module.loadConfig(ApplicationConfig.java:497)
at com.top_logic.basic.config.ApplicationConfig$Module.newImplementationInstance(ApplicationConfig.java:458)
at com.top_logic.basic.config.ApplicationConfig$Module.newImplementationInstance(ApplicationConfig.java:1)
at com.top_logic.basic.module.BasicRuntimeModule.startUp(BasicRuntimeModule.java:98)
at com.top_logic.basic.module.ModuleUtil.start(ModuleUtil.java:261)
at com.top_logic.basic.module.ModuleUtil.startModuleAndAdd(ModuleUtil.java:751)
at com.top_logic.basic.module.ModuleUtil.startModulesAndAdd(ModuleUtil.java:705)
at com.top_logic.basic.module.ModuleUtil.startUp(ModuleUtil.java:241)
at com.top_logic.basic.module.ModuleUtil.startXMLProperties(ModuleUtil.java:1044)
at com.top_logic.basic.XMLProperties.internalStart(XMLProperties.java:1145)
at com.top_logic.basic.XMLProperties.restartXMLProperties(XMLProperties.java:1130)
at com.top_logic.basic.XMain.startupXMLProperties(XMain.java:211)
at com.top_logic.basic.XMain.initXMLProperties(XMain.java:146)
at com.top_logic.basic.XMain.beforeActualPerformance(XMain.java:597)
at com.top_logic.basic.Main.runMain(Main.java:257)
at com.top_logic.kafka.server.main.ZooKeeperStarterMain.main(ZooKeeperStarterMain.java:36)
Solution Approach
The tl:WrapperGenerator works and can serve as a template for a solution.
Test
Test without additional deploy folders: Start ZooKeeper.
Test with additional ` deploy ` folders:
- Create a folder named “xxx” in the “deploy” folder under both com.top_logic and com.top_logic.kafka.server. Create the “webapp” folder inside each of these.
- Set a breakpoint in MultiFileManager.paths().
- In the launch configuration, add " --aspect xxx " as an argument for the application under "Start ZooKeeper."
- Run the launch configuration.
- At the breakpoint, check whether the two " webapp " folders appear in _paths.