Java Talend-无法在tmap中使用globalMap.get()

Java Talend-无法在tmap中使用globalMap.get(),java,talend,Java,Talend,我在tmap中尝试了所有可能的组合,我感到难以置信的沮丧 我在tJava中设置了全局变量,如下所示 globalMap.put("table_id",22); 然后沿着组件行,我在tMap的out模式中调用全局映射 globalMap.get(“表id”) 并得到以下错误 Error Line: 2539 Detail Message: Type mismatch: cannot convert from Object to int There may be some other errors

我在tmap中尝试了所有可能的组合,我感到难以置信的沮丧

我在tJava中设置了全局变量,如下所示

globalMap.put("table_id",22);
然后沿着组件行,我在tMap的out模式中调用全局映射

globalMap.get(“表id”)

并得到以下错误

Error Line: 2539
Detail Message: Type mismatch: cannot convert from Object to int
There may be some other errors caused by JVM compatibility. Make sure your JVM setup is similar to the studio.
我试过的东西

(Integer)globalMap.get("table_id")   
((Integer)globalMap.get("table_id"))   
Integer.parseint(globalMap.get("table_id"))
任何组合都不起作用,但简单地输入数字22就可以了


任何帮助都非常有用

您可以使用上下文变量

第一步。在上下文中声明变量

第二步。在指定值的位置指定变量。e、 g.上下文。表_id=22


第三步。在tMap组件中使用此上下文变量。

您可以改用上下文变量

第一步。在上下文中声明变量

第二步。在指定值的位置指定变量。e、 g.上下文。表_id=22


第三步。在tMap组件中使用此上下文变量。

答案在于以下语句:

类型不匹配:无法从对象转换为int

所以,这绝对是一个铸造问题。我确信:
(Integer)globalMap.get(“table\u id”)
应该可以工作

如果它不工作,错误消息肯定会与“类型不匹配”不同

  • 注1:最好使用本机组件“tSetGlobalVar”在globalMap中存储一个值

  • 注2:不应在运行时动态修改上下文变量,因为它们不是线程安全的(globalMap是!)


答案就在这句话中:

类型不匹配:无法从对象转换为int

所以,这绝对是一个铸造问题。我确信:
(Integer)globalMap.get(“table\u id”)
应该可以工作

如果它不工作,错误消息肯定会与“类型不匹配”不同

  • 注1:最好使用本机组件“tSetGlobalVar”在globalMap中存储一个值

  • 注2:不应在运行时动态修改上下文变量,因为它们不是线程安全的(globalMap是!)


    • 我同意@mhassine的观点 (Integer)globalMap.get(“table_id”)应该可以工作,但我只使用它

      (int)globalMap.get("table_id")
      

      也许这是6.3的一个怪癖,但我无法解释它

      我同意@mhassine的说法 (Integer)globalMap.get(“table_id”)应该可以工作,但我只使用它

      (int)globalMap.get("table_id")
      

      也许这是6.3的一个怪癖,但yea无法解释它

      ((int)globalMap.get(“table_id”))和
      ((Integer)globalMap.get(“table_id”))
      对我来说都适用。也许可以尝试在不同的JVM下运行Talend。下面是一个如何实现的示例,只需将路径与您自己的路径交换即可<代码>C:\Talend\Talend-Studio-20141207\u 1530-V5.6.1\Talend-Studio-win-x86\u 64.exe-vm“C:\Program Files\Java\jre7\bin\server\jvm.dll”或者您也可以尝试将值存储为字符串,然后进行转换…因此在tjava中使用globalMap.put(“table\u id”,“22”)。。在tmap中,使用Integer.parseInt((字符串)globalMap.get(“table_id”))和
      ((int)globalMap.get(“table_id”))
      ((Integer)globalMap.get(“table_id”))对我都有效。也许可以尝试在不同的JVM下运行Talend。下面是一个如何实现的示例,只需将路径与您自己的路径交换即可<代码>C:\Talend\Talend-Studio-20141207\u 1530-V5.6.1\Talend-Studio-win-x86\u 64.exe-vm“C:\Program Files\Java\jre7\bin\server\jvm.dll”或者您也可以尝试将值存储为字符串,然后进行转换…因此在tjava中使用globalMap.put(“table\u id”,“22”)。。在tmap中使用Integer.parseInt((String)globalMap.get(“table_id”))