You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Jira API报错‘Option id 'null' is not valid’求解

Java Jira API创建Bug时自定义单选字段报错:Option id 'null' is not valid

我已经查遍了相关报错的案例,别人的问题都是字段名或字段值错误,但我试了所有可能的组合还是解决不了。

我用Java Jira API创建新Bug,公司有个自定义字段**"Detected by Test Type"**(字段ID:customfield_15870),可选值为"Integration Testing"、"Functional Testing"、"Performance Testing"。我从现有Bug里获取到该字段的"Performance Testing"值信息如下:

  • value: "Performance Testing"
  • id: "12345"
  • self: "https:///rest/api/2/customFieldOption/12345"
  • disabled: false

这说明字段名和值都是正确的,但我尝试了以下几种写法,都抛出Option id 'null' is not valid错误。

尝试过的代码写法

写法1:构建完整HashMap

Map<String, Object> cascadingValues = new HashMap<String, Object>();
cascadingvalues.put("value",  "Performance Testing");
cascadingvalues.put("id",  "12345");
cascadingvalues.put("disabled",  false);
cascadingvalues.put("self",  "https://<url>/rest/api/2/customFieldOption/12345");

iib.setFieldValue("customfield_15870", new ComplexIssueInputFieldValue(cascadingValues));

写法2:仅传入value

iib.setFieldValue("customfield_15870", ComplexIssueInputFieldValue.with("value", "Performance Testing"));

写法3:错误地用id参数传value值

iib.setFieldValue("customfield_15870", ComplexIssueInputFieldValue.with("id", "Performance Testing"));

写法4:错误地用value参数传id字符串

iib.setFieldValue("customfield_15870", ComplexIssueInputFieldValue.with("value", "12345"));

写法5:仅传入id

iib.setFieldValue("customfield_15870", ComplexIssueInputFieldValue.with("id", "12345"));

堆栈跟踪信息

RestClientException{statusCode=Optional.of(400), errorCollections=[ErrorCollection{status=400, errors={customfield_15870=Option id 'null' is not valid}, errorMessages=[]}]}
       at com.atlassian.jira.rest.client.internal.async.DelegatingPromise.claim(DelegatingPromise.java:47)
       at com.bla.jira.IssueWriterBeta.createIssue(IssueWriterBeta.java:340)
       at com.bla.almutil.ConnectToJira.createEpic(ConnectToJira.java:282)
       at com.bla.almutil.ConnectToJira.main(ConnectToJira.java:378)
Caused by: RestClientException{statusCode=Optional.of(400), errorCollections=[ErrorCollection{status=400, errors={customfield_15870=Option id 'null' is not valid}, errorMessages=[]}]}
       at com.atlassian.jira.rest.client.internal.async.AbstractAsynchronousRestClient$2.apply(AbstractAsynchronousRestClient.java:173)
       at com.atlassian.jira.rest.client.internal.async.AbstractAsynchronousRestClient$2.apply(AbstractAsynchronousRestClient.java:167)
       at com.atlassian.httpclient.api.ResponsePromiseMapFunction.apply(ResponsePromiseMapFunction.java:48)
       at com.atlassian.httpclient.api.ResponsePromiseMapFunction.apply(ResponsePromiseMapFunction.java:12)
       at com.atlassian.util.concurrent.Promises$Of$3.apply(Promises.java:295)
       at com.atlassian.util.concurrent.Promises$2.onSuccess(Promises.java:185)
       at com.google.common.util.concurrent.Futures$7.run(Futures.java:1072)
       at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:253)
       at com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair.execute(ExecutionList.java:161)
       at com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:146)
       at com.google.common.util.concurrent.AbstractFuture.done(AbstractFuture.java:235)
       at com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:172)
       at com.google.common.util.concurrent.SettableFuture.set(SettableFuture.java:53)
       at com.atlassian.util.concurrent.Promises$Of$3.apply(Promises.java:295)
       at com.atlassian.util.concurrent.Promises$2.onSuccess(Promises.java:185)
       at com.google.common.util.concurrent.Futures$7.run(Futures.java:1072)
       at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:253)
       at com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair.execute(ExecutionList.java:161)
       at com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:146)
       at com.google.common.util.concurrent.AbstractFuture.done(AbstractFuture.java:235)
       at com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:172)
       at com.google.common.util.concurrent.SettableFuture.set(SettableFuture.java:53)
       at com.atlassian.httpclient.apache.httpcomponents.SettableFuturePromiseHttpPromiseAsyncClient$1$1.run(SettableFuturePromiseHttpPromiseAsyncClient.java:46)
       at com.atlassian.httpclient.apache.httpcomponents.SettableFuturePromiseHttpPromiseAsyncClient$ThreadLocalDelegateRunnable$1.run(SettableFuturePromiseHttpPromiseAsyncClient.java:197)
       at com.atlassian.httpclient.apache.httpcomponents.SettableFuturePromiseHttpPromiseAsyncClient.runInContext(SettableFuturePromiseHttpPromiseAsyncClient.java:90)
       at com.atlassian.httpclient.apache.httpcomponents.SettableFuturePromiseHttpPromiseAsyncClient$ThreadLocalDelegateRunnable.run(SettableFuturePromiseHttpPromiseAsyncClient.java:192)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
       at java.lang.Thread.run(Unknown Source)

求各位帮忙解决这个问题,提前感谢!


内容的提问来源于stack exchange,提问作者Suave Devil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 00:14:53