簡體   English   中英

Jenkins groovy classpath問題 - 無法解析類

[英]Jenkins groovy classpath issue - unable to resolve class

我在Jenkins中有一個'Execute Groovy script'構建步驟。 此步驟包含兩個文件 - 名為createWorkspaces.groovy的客戶端文件和名為WorkspaceBean.groovy的Bean文件。 兩者都位於作業工作區中的相同位置。

以前運行Jenkins 1.554這沒有問題,但升級到1.594后,我收到以下錯誤:

/jenkins/workspace/testjob/scripts/groovy/createWorkspaces.groovy: 75: unable to resolve class WorkspaceBean 
 @ line 75, column 21.
       def workspace = new WorkspaceBean()
                       ^

1 error

我已批准新腳本批准功能中的腳本,並且還將文件的位置添加到作業步驟中的類路徑參數以及jenkins-core.jar文件的位置。

有什么想法為什么停止工作?

這似乎是groovy插件中的一個錯誤。 在插件配置中添加類路徑字段的路徑不會更改類路徑。

這不起作用:

在這里添加不起作用

通過'將環境變量注入構建過程'插件添加CLASSPATH變量確實有效。

這有效:

在此輸入圖像描述

嘗試動態加載您的jar。 這是我發現的最終工作解決方案。 此示例用於將網絡文件夾復制到本地計算機。

def file = new File("jcifs-1.3.18.jar")
this.class.classLoader.rootLoader.addURL(file.toURI().toURL())


def auth_server = Class.forName("jcifs.smb.NtlmPasswordAuthentication").newInstance("domain", "username", "password")
def auth_local = Class.forName("jcifs.smb.NtlmPasswordAuthentication").newInstance(null, "local_user", "password")

def source_url = args[0]
def dest_url = args[1]
def auth = auth_server

//prepare source file
if(!source_url.startsWith("\\\\"))
{
  source_url = "\\\\localhost\\"+ source_url.substring(0, 1) + "\$" + source_url.substring(1, source_url.length());
  auth = auth_local  
}
source_url = "smb:"+source_url.replace("\\","/");
def source = Class.forName("jcifs.smb.SmbFile").newInstance(source_url,auth_server)

//prepare destination file
if(!dest_url.startsWith("\\\\"))
{
  dest_url = "\\\\localhost\\"+ dest_url.substring(0, 1) + "\$" +dest_url.substring(2, dest_url.length());
  auth = auth_local  
}
dest_url = "smb:"+dest_url.replace("\\","/");
def dest = Class.forName("jcifs.smb.SmbFile").newInstance(dest_url,auth_local)
source.copyTo(dest)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM