Exception ClassNotFoundException when accessing Profields Fields inline script

Shivashankar Boloor Prakash October 25, 2018

Im facing Issue when accessing Profields classes. 
Getting ClassNotFoundException when the Script is accessing Fields.

I'm using Automation for Jira plugging to trigger the execution of the script.

here is the log for the same
2018-10-24 18:10:37,454 automation-rule-executor:thread-5 ERROR dhjiraadmin[c.o.scriptrunner.automation.ExecuteScriptIssueAction]*************************************************************************************
2018-10-24 18:10:37,454 automation-rule-executor:thread-5 ERROR dhjiraadmin[c.o.scriptrunner.automation.ExecuteScriptIssueAction] Script function failed on Automation for Jira rule: TEST Profields, file: <inline script>
java.lang.reflect.InvocationTargetException
at com.onresolve.scriptrunner.runner.ScriptRunnerImpl.runScriptAndGetContext(ScriptRunnerImpl.groovy:173)
at com.onresolve.scriptrunner.runner.ScriptRunner$runScriptAndGetContext$6.callCurrent(Unknown Source)
at com.onresolve.scriptrunner.runner.ScriptRunnerImpl.runStringAsScript(ScriptRunnerImpl.groovy:162)
at com.onresolve.scriptrunner.runner.ScriptRunner$runStringAsScript$5.call(Unknown Source)
at com.onresolve.scriptrunner.canned.jira.utils.CustomScriptDelegate.doScript(CustomScriptDelegate.groovy:72)
at com.onresolve.scriptrunner.canned.jira.utils.CustomScriptDelegate$doScript$2.call(Unknown Source)
at com.onresolve.scriptrunner.automation.ExecuteScriptIssueAction.execute(ExecuteScriptIssueAction.groovy:117)
at com.codebarrel.jira.plugin.automation.module.legacy.PluggableComponentExecutor.execute(PluggableComponentExecutor.java:68)
at com.codebarrel.jira.plugin.automation.module.legacy.PluggableComponentExecutor.execute(PluggableComponentExecutor.java:32)
at com.codebarrel.automation.api.service.ComponentChainImpl.doExecute(ComponentChainImpl.java:100)
at com.codebarrel.automation.api.service.SingleRuleExecutorServiceImpl.execute(SingleRuleExecutorServiceImpl.java:193)
at com.codebarrel.jira.plugin.automation.queue.JiraAutomationQueueExecutor.lambda$null$3(JiraAutomationQueueExecutor.java:256)
at com.codebarrel.jira.plugin.automation.service.execution.JiraThreadLocalExecutor.lambda$executeAs$0(JiraThreadLocalExecutor.java:36)
at com.codebarrel.jira.plugin.automation.service.execution.JiraThreadLocalExecutor.executeAsWithResult(JiraThreadLocalExecutor.java:65)
at com.codebarrel.jira.plugin.automation.service.execution.JiraThreadLocalExecutor.executeAsWithResult(JiraThreadLocalExecutor.java:52)
at com.codebarrel.jira.plugin.automation.service.execution.JiraThreadLocalExecutor.executeAs(JiraThreadLocalExecutor.java:35)
at com.codebarrel.jira.plugin.automation.queue.JiraAutomationQueueExecutor.lambda$processClaimedItem$4(JiraAutomationQueueExecutor.java:256)
at com.atlassian.jira.util.concurrent.BoundedExecutor$1.run(BoundedExecutor.java:50)
Caused by: java.lang.NoClassDefFoundError: com/deiser/jira/profields/api/field/Field
at Script68.<init>(Script68.groovy)
Caused by: java.lang.ClassNotFoundException: com.deiser.jira.profields.api.field.Field
... 1 more

here is the piece of code

import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.issue.IssueInputParameters
import com.atlassian.jira.bc.issue.IssueService.UpdateValidationResult
import com.atlassian.jira.component.ComponentAccessor
import com.onresolve.scriptrunner.runner.customisers.WithPlugin
import com.deiser.jira.profields.api.field.FieldService
import com.deiser.jira.profields.api.value.ValueService
import com.deiser.jira.profields.api.field.status.StatusField
import com.atlassian.jira.issue.Issue
import com.onresolve.scriptrunner.runner.ScriptRunnerImpl
import com.deiser.jira.profields.api.field.number.NumberField
import com.deiser.jira.profields.api.field.Field

@WithPlugin("com.deiser.jira.profields")

def Varissue = issue//event.getIssue();

String str = "test GetEfficienciesValue : "+GetEfficienciesValue(Varissue,"Junior" )

PostComment(str)
def PostComment(String str)

{ //def issue = event.getIssue(); IssueService issueService = ComponentAccessor.getIssueService() IssueInputParameters inputParameters = issueService.newIssueInputParameters() def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() inputParameters.setComment(str); IssueService.UpdateValidationResult validationResult = issueService.validateUpdate(user,issue.id,inputParameters) issueService.update(user, validationResult) }

def String GetEfficienciesValue(Issue myIssue, String strVal) 
{

def valueService = ComponentAccessor.getOSGiComponentInstanceOfType(ValueService.class)
def fieldService = ComponentAccessor.getOSGiComponentInstanceOfType(FieldService.class)

Field fld = GetFieldIdByName(strVal)

if(fld != null)

{ def val = valueService.getValue(myIssue.projectObject,(NumberField) fld) return val; }

return null
}

def Field GetFieldIdByName(String str){

def fieldService = ComponentAccessor.getOSGiComponentInstanceOfType(FieldService.class);
List<Field> fields = fieldService.get();

for (Field field : fields){
if (str.equals(field.getName()))

{ return field //.getId() as String; break; }

}
return null;
}

 

Profields version : 6.0.2

JIRA version: 7.12.1

2 answers

0 votes
Monika Agarwal December 1, 2019

@Shivashankar Boloor Prakash - Is this issue resolved. I am also facing the same issue.

0 votes
Joshua Yamdogo @ Adaptavist
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
October 25, 2018

Hi,

What version of ScriptRunner are you running? From what you've described, it sounds like you're experiencing an instance of SRPLAT-77. In short, using the @WithPlugin annotation can occasionally fail due to a race condition. Luckily, a fix for this bug has just recently been released in ScriptRunner version 5.4.30.

Regards,

Josh

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events