Talend - 执行控制台不显示自定义消息

时间:2016-06-15 05:28:33

标签: talend

我已经创建了一个测试目的自定义Talend组件;如果您有begin,main和end 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链接,其他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
 */

1 个答案:

答案 0 :(得分:0)

我将“startable”属性更改为“true”,现在可以正常工作了。似乎该组件从未运行,因为它是工作链中的第一个并且不可启动,这意味着(如果我已经理解的话)它期望从未来的输入(来自可启动组件)。