【问题标题】:Run Talend job on a Unix-like machine在类 Unix 机器上运行 Talend 作业
【发布时间】:2023-03-28 14:04:01
【问题描述】:

我尝试运行从 Talend Open Studio v5.4.0 生成的简单作业。 它调用 Web 服务并将响应保存到 XML 文件中。在我的开发(Windows 7)机器上一切正常。

在 RHEL 机器上,使用此版本的 Java:

[root@localhost checkws]# java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

当我尝试运行我的工作时,我得到:

[root@localhost checkws]# sh checkws_run.sh
Exception in thread "main" java.lang.NoClassDefFoundError: routines/system/api/TalendJob
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: routines.system.api.TalendJob
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 13 more

如何解决这个问题?

【问题讨论】:

  • 为了解决这个问题,我为 Windows 和 Linux 平台导出了作业
  • 如果它真的解决了问题,你可以回答你自己的问题:)
  • @MaxKvt Balazs 是对的:请发布您的解决方案作为答案并接受它。通过这种方式,人们会立即看到问题已经解决,不再需要解决方案。 ;)
  • @MaxKvt 嗯,我自己贴出来,大家看清楚解决办法

标签: java linux noclassdeffounderror talend


【解决方案1】:

为了解决这个问题(就像 OP 所做的那样),我为 Windows 和 Linux 平台导出了该作业。似乎是 Talend 导出中的一个错误。

【讨论】:

  • 对我来说,TOS 3.2.2.r33000) 我只为 Unix 导出并检查了“导出依赖项”
  • @Joand 请写下您的解决方案作为答案 ;)
【解决方案2】:

在 TOS 3.2.2.r33000 上,我仅针对 Unix 导出并检查了“导出依赖项”

【讨论】:

    【解决方案3】:

    Talend 生成一个 zip 包,它可以在 Windows(使用 bat 文件)和 Linux(使用 sh 文件)中正常工作。 sh 在类路径中有所有 lib jar。

    如果您想更改 lib 路径,并在您的 lib 路径中动态添加所有 jar,这是一种方法。

    #!/bin/sh
    cd `dirname $0`
    
    path_lib=/path/to/your/lib/directory
    
    # include all jars in lib directory to classpath
    for jar_file in `find $path_lib -name "*.jar"`
    do
    classpath="${jar_file}:${classpath}"
    done
    
    # x_y is the version of your job, x_y = 0_1 for the first version of a talend job.
    java -Xms256M -Xmx1024M -cp ${classpath} projectname.jobname_x_y.jobname --context=Default "$@"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多