2014-01-17 50 views
3

上運行了Talend的工作,我嘗試從了Talend Open Studio的V5.4.0生成簡單的工作。它調用一個Web服務並將響應保存到一個XML文件中。在我的開發(Windows 7)機器上一切正常。一個類Unix機器

在RHEL機器,這個版本的Java:

[[email protected] 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) 

,當我嘗試運行我的工作,我得到:

[[email protected] 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 

如何解決這個問題呢?

+2

爲了解決這個問題,我既爲Windows和Linux平臺 –

+2

你可以回答自己的問題出口的工作,如果它確實解決了問題:) –

+0

@MaxKvt Balazs是正確的:發佈您的解決方案作爲答案,並接受它,請。通過這種方式,人們會立即看到問題已經解決,並且不再需要解決方案。 ;) – bluish

回答

0

了Talend生成一個壓縮包,它在Windows正常工作(使用一個bat文件)和Linux(使用SH文件)。 sh在classpath中有所有的lib jar。

如果你想改變的lib路徑,並在你的庫路徑動態地添加所有的罐子,這是一個辦法做到這一點。

#!/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 "[email protected]" 
1

爲了解決這個問題(和OP一樣),我導出了Windows和Linux平臺的作業。似乎是Talend出口中的一個錯誤。

+0

對於我來說,TOS 3.2.2.r33000)我只出口了Unix和檢查「出口依賴」 – Joand

+0

@Joand請寫出您的解決方案作爲回答;) – bluish

1

在TOS 3.2.2.r33000我只出口了Unix和檢查「出口依賴」