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
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.