根据文档,我们可以在模块创建时动态加载jar,方法是利用.properties文件中的 module.classloader 属性:
http://docs.spring.io/spring-xd/docs/1.3.1.RELEASE/reference/html/#module-class-loading
我花了两天时间尝试测试此功能。这是行不通的。 module.classloader 选项似乎被忽略了
我在XD代码中找不到任何名为 module.classloader 的字符串。但我在这个类中找到了另一个名为 module.classpath 的文件:
上述类中的代码似乎与文档相符。但不幸的是,它也不起作用。找不到我的类,我得到java.lang.ClassNotFoundException
我有名为 dir4jars 的模块选项,我在创建时加载jar(当我发出作业创建--name xx --defintion ..)。它是一个目录,我已经测试了以下可能性,包括 module.classpath 和 module.classloader :
module.classpath=${dir4jars}/*.jar
module.classloader=${dir4jars}/*.jar
.
.
job create --name jobName --definition "myJobModuleName --dir4jars=C:/ELS/Flash/libxd" --deploy
and
job create --name jobName --definition "myJobModuleName --dir4jars=file:C:/ELS/Flash/libxd" --deploy
我需要 dir4jars 是绝对的并且在XD之外。 所以我的问题:
非常感谢。
答案 0 :(得分:0)
我认为它必须是module.classpath
而module.classloader
在文档中看起来像是一个错误。当您明确使用module.classpath=file:C:/ELS/Flash/libxd
时,这是否有效?
作为旁注:请考虑使用Spring Cloud Data Flow这是Spring XD的继承者。