Talend - 执行控制台不显示自定义消息
Talend - Execution console not showing custom messages
我创建了一个用于测试的自定义 Talend 组件;下面是开始、主要和结束 javajet 文件:
开始:
<%
imports...
<%
CodeGeneratorArgument codeGenArgument = (CodeGeneratorArgument) argument;
INode node = (INode)codeGenArgument.getArgument();
String cid = node.getUniqueName();
%>
System.out.println("I am the begin section");
for (int myvar_<%=cid%>=0; myvar_<%=cid%><10; myvar_<%=cid%>++) {
主要内容:
<%
imports...
%>
<%
CodeGeneratorArgument codeGenArgument = (CodeGeneratorArgument) argument;
INode node = (INode)codeGenArgument.getArgument();
String cid = node.getUniqueName();
%>
System.out.print("myvar is "+myvar_<%=cid%>);
结束:
<%
imports...
%>
<%
CodeGeneratorArgument codeGenArgument = (CodeGeneratorArgument) argument;
INode node = (INode)codeGenArgument.getArgument();
String cid = node.getUniqueName();
%>
}
System.out.println("I am the end section");
问题是在使用 System.out.println()
时,消息没有打印到控制台。
这是一个执行示例:
Starting job myjob at 07:16 15/06/2016.
[statistics] connecting to socket on port 4009
[statistics] connected
[statistics] disconnected
Job myjob ended at 07:16 15/06/2016. [exit code=0]
同样,我发现 this link 另一位 Talend 用户描述了同样的问题。尽管如此,在我的例子中,我将编译器合规级别设置为 1.8,并安装了相同的 JRE。
有什么想法吗?谢谢!
编辑 1
按照@garpitmzn 的建议添加生成的代码:
/**
* [tOrionTest_1 begin ] start
*/
ok_Hash.put("tOrionTest_1", false);
start_Hash.put("tOrionTest_1", System.currentTimeMillis());
currentComponent="tOrionTest_1";
int tos_count_tOrionTest_1 = 0;
System.out.println("I am the begin section");
for (int myvar_tOrionTest_1=0; myvar_tOrionTest_1<10; myvar_tOrionTest_1++) {
/**
* [tOrionTest_1 begin ] stop
*/
/**
* [tOrionTest_1 main ] start
*/
currentComponent="tOrionTest_1";
System.out.print("myvar is "+myvar_tOrionTest_1);
tos_count_tOrionTest_1++;
/**
* [tOrionTest_1 main ] stop
*/
/**
* [tOrionTest_1 end ] start
*/
currentComponent="tOrionTest_1";
}
System.out.println("I am the end section");
ok_Hash.put("tOrionTest_1", true);
end_Hash.put("tOrionTest_1", System.currentTimeMillis());
/**
* [tOrionTest_1 end ] stop
*/
我将 "startable" 属性 更改为 "true",现在可以使用了。似乎该组件从来没有 运行 因为它是作业链中的第一个并且不可启动,这意味着(如果我理解得很好的话)它期待一个从未出现的输入(来自可启动组件)。
我创建了一个用于测试的自定义 Talend 组件;下面是开始、主要和结束 javajet 文件:
开始:
<%
imports...
<%
CodeGeneratorArgument codeGenArgument = (CodeGeneratorArgument) argument;
INode node = (INode)codeGenArgument.getArgument();
String cid = node.getUniqueName();
%>
System.out.println("I am the begin section");
for (int myvar_<%=cid%>=0; myvar_<%=cid%><10; myvar_<%=cid%>++) {
主要内容:
<%
imports...
%>
<%
CodeGeneratorArgument codeGenArgument = (CodeGeneratorArgument) argument;
INode node = (INode)codeGenArgument.getArgument();
String cid = node.getUniqueName();
%>
System.out.print("myvar is "+myvar_<%=cid%>);
结束:
<%
imports...
%>
<%
CodeGeneratorArgument codeGenArgument = (CodeGeneratorArgument) argument;
INode node = (INode)codeGenArgument.getArgument();
String cid = node.getUniqueName();
%>
}
System.out.println("I am the end section");
问题是在使用 System.out.println()
时,消息没有打印到控制台。
这是一个执行示例:
Starting job myjob at 07:16 15/06/2016.
[statistics] connecting to socket on port 4009
[statistics] connected
[statistics] disconnected
Job myjob ended at 07:16 15/06/2016. [exit code=0]
同样,我发现 this link 另一位 Talend 用户描述了同样的问题。尽管如此,在我的例子中,我将编译器合规级别设置为 1.8,并安装了相同的 JRE。
有什么想法吗?谢谢!
编辑 1
按照@garpitmzn 的建议添加生成的代码:
/**
* [tOrionTest_1 begin ] start
*/
ok_Hash.put("tOrionTest_1", false);
start_Hash.put("tOrionTest_1", System.currentTimeMillis());
currentComponent="tOrionTest_1";
int tos_count_tOrionTest_1 = 0;
System.out.println("I am the begin section");
for (int myvar_tOrionTest_1=0; myvar_tOrionTest_1<10; myvar_tOrionTest_1++) {
/**
* [tOrionTest_1 begin ] stop
*/
/**
* [tOrionTest_1 main ] start
*/
currentComponent="tOrionTest_1";
System.out.print("myvar is "+myvar_tOrionTest_1);
tos_count_tOrionTest_1++;
/**
* [tOrionTest_1 main ] stop
*/
/**
* [tOrionTest_1 end ] start
*/
currentComponent="tOrionTest_1";
}
System.out.println("I am the end section");
ok_Hash.put("tOrionTest_1", true);
end_Hash.put("tOrionTest_1", System.currentTimeMillis());
/**
* [tOrionTest_1 end ] stop
*/
我将 "startable" 属性 更改为 "true",现在可以使用了。似乎该组件从来没有 运行 因为它是作业链中的第一个并且不可启动,这意味着(如果我理解得很好的话)它期待一个从未出现的输入(来自可启动组件)。