2012-01-25 43 views
1

我已閱讀jenkins頁面上的文檔以及其他一些留言板,並且他們似乎都使用Tomcat提供了他們的教程(ewwww)! !!。我的任務是爲了可維護性原因提供Jenkins作爲獨立服務。到目前爲止,我已經設置了HUDSONHOME,CLASSPATH和JAVA_HOME。我的Java版本是在沒有Tomcat或Apache的情況下在Linux中配置Jenkins(獨立服務)使用Borlands StarTeam

java version "1.6.0_20" 
OpenJDK Runtime Environment (IcedTea6 1.9.7) (rhel-1.39.1.9.7.el6-x86_64) 
OpenJDK 64-Bit Server VM (build 19.0-b09, mixed mode) 

和我有/etc/profile.d中的腳本執行以下操作:

JAVA_HOME=/usr/java; 
JRE_HOME=/usr/java/jre/bin; 
if [ "${CLASSPATH}" == "" ]; then 
CLASSPATH=/var/lib/jenkins/war/WEB-INF; 
HUDSON_HOME=/var/lib/jenkins/war/WEB-INF; 
else 
CLASSPATH=${CLASSPATH}:/var/lib/jenkins/war/WEB-INF; 
HUDSON_HOME=/var/lib/jenkins/war/WEB-INF; 
fi 
PATH=${PATH}:${JAVA_HOME}/bin:/opt/StarTeamCP_2009/bin:/opt/QtSDK/Desktop/Qt/474/gcc/bin:/opt/QtSDK/QtCreator/bin/:${CLASSPATH}:${HUDSON_HOME}; 
export JAVA_HOME; 
export PATH; 
export CLASPATH; 

展望/ etc/passwd中,詹金斯默認shell是bash所以沒有需要一個csh版本的腳本。作爲用戶,我可以在所有變量設置正確的情況下登錄。我從他們的主頁RPM link安裝了Jenkins RPM。

我從詹金斯輸出窗口得到的錯誤是:

FATAL: com/starbase/starteam/Folder 
java.lang.NoClassDefFoundError: com/starbase/starteam/Folder 
    at hudson.plugins.starteam.StarTeamSCM.checkout(StarTeamSCM.java:127) 
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1195) 
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:576) 
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:465) 
    at hudson.model.Run.run(Run.java:1404) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 
    at hudson.model.ResourceController.execute(ResourceController.java:88) 
    at hudson.model.Executor.run(Executor.java:238) 
Caused by: java.lang.ClassNotFoundException: com.starbase.starteam.Folder 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
    ... 8 more 

我缺少什麼?


至於你的「未找到類」異常,你拉動不在Tomcat或詹金斯的零件庫,和他們顯然取決於也不在Tomcat或詹金斯項目。這導致了一個問題:「如果你想運行非Borland應用程序,爲什麼要用Borland庫來填充你的環境?」

爲了迴應這個問題,我使用了Starteam Plugin作爲Jenkins的一部分。 Jenkins需要知道Borland .jar文件中包含的StarTeam類的定義。

+0

貌似同樣的問題在這裏:http://stackoverflow.com/questions/5163763/how-to-configure-jenkins-starteam-plugin –

回答

1

---響應更新編輯---

好吧,你需要對詹金斯插件明星隊的庫。這是理解的。謝謝你的澄清。

由於您使用的是Jenkins的RPM版本,因此您使用的是Tomcat(它是一個依賴項)。無論您是否嘗試在未來不使用Tomcat運行Jenkins(以及如何執行此操作)都是您的最終選擇;然而,你可能會發現Tomcat增加了比你想象的更多的價值。

您目前遇到的問題與Tomcat執行安全類加載有關。您不能認爲Tomcat的CLASSPATH條目可用於內部Web應用程序。這有很好的理由。

由於Tomcat的兩個(容器/應用)之間進行區分,應用程序可以選擇他們彼此獨立地需要。優點是應用程序不必重寫或調整爲使用相同版本的庫(jar文件)。負側是類路徑,等需要在每一web應用基礎上配置。

我的猜測是Jenkins文檔中的某個地方提到了在$(webapps)/ jenkins/WEB-INF/lib中相關庫中複製(或鏈接)的項目。也就是說,如果有要過任何詹金斯-的StarTeam文檔,我指的是第一個。

祝你好運。

---原帖如下 -

Jenkens是一個Java Web應用程序。 Tomcat是一個Java Web服務器。在Java Web服務器之外運行Java Web應用程序將非常困難。

Web服務器打開端口以接受Web請求,然後將這些請求的處理過的表單路由到Web應用程序。通常不可能以獨立模式運行應用程序,因爲web應用程序對HTTP協議,網絡套接字,會話跟蹤,身份驗證等細節知之甚少。

有時可以嵌入在應用程序中提供小型Java Web服務器(提供快速部署);但是,這並不是一個「更加可支持」的環境,因爲第二個需要在同一臺機器上運行兩個「項目」,則會遇到針對相同端口爭奪嵌入式配置的問題。這涉及到「解包」應用程序,進行內部更改並重新包裝它。任何「更新」將完全重置特定於站點的定製。

關於Tomcat的唯一「ewwww」部分很可能是您對此感到不適。沒關係,每個人都是這樣開始的。

至於你的「找不到類」異常,你正在拉取不屬於Tomcat或Jenkins的庫,而且它們顯然依賴於Tomcat或Jenkins中沒有的東西。這導致了一個問題:「如果你想運行非Borland應用程序,爲什麼要用Borland庫來填充你的環境?」

+0

請參照實線以下的原單後。這將進一步解釋事情。 –

+0

@Matthew Hoggan,編輯,以反映你遇到的問題(我希望)。祝你好運。 –

相關問題