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

使用Artifactory Bamboo插件还原NuGet包时遇字符串索引越界错误

解决Artifactory Bamboo插件NuGet Restore时的StringIndexOutOfBoundsException错误

我有一个依赖多个NuGet库的Visual Studio项目,已在Artifactory创建用于拉取和缓存NuGet包的远程仓库,目标是移除源码控制中的packages目录,每次构建从该仓库还原依赖。通过脚本执行nuget restore solutionName.sln -Source http://artifactoryRepoAddress可成功构建,但使用Artifactory官方Bamboo插件时,构建每次失败,抛出如下错误:

java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at org.jfrog.build.extractor.nuget.extractor.NugetRun.execute(NugetRun.java:185)
    at org.jfrog.bamboo.task.ArtifactoryDotNetTaskBase.executeRestore(ArtifactoryDotNetTaskBase.java:113)
    at org.jfrog.bamboo.task.ArtifactoryDotNetTaskBase.runTask(ArtifactoryDotNetTaskBase.java:74)
    at org.jfrog.bamboo.task.ArtifactoryTaskType.execute(ArtifactoryTaskType.java:46)
    at com.atlassian.bamboo.task.TaskExecutorImpl.lambda$executeTasks$2(TaskExecutorImpl.java:321)
    at com.atlassian.bamboo.task.TaskExecutorImpl.executeTaskWithPrePostActions(TaskExecutorImpl.java:258)
    at com.atlassian.bamboo.task.TaskExecutorImpl.executeTasks(TaskExecutorImpl.java:321)
    at com.atlassian.bamboo.task.TaskExecutorImpl.execute(TaskExecutorImpl.java:118)
    at com.atlassian.bamboo.build.pipeline.tasks.ExecuteBuildTask.call(ExecuteBuildTask.java:73)
    at com.atlassian.bamboo.v2.build.agent.DefaultBuildAgent.executeBuildPhase(DefaultBuildAgent.java:205)
    at com.atlassian.bamboo.v2.build.agent.DefaultBuildAgent.build(DefaultBuildAgent.java:177)
    at com.atlassian.bamboo.v2.build.agent.BuildAgentControllerImpl.lambda$waitAndPerformBuild$0(BuildAgentControllerImpl.java:169)
    at com.atlassian.bamboo.variable.CustomVariableContextImpl.withVariableSubstitutor(CustomVariableContextImpl.java:118)
    at com.atlassian.bamboo.v2.build.agent.BuildAgentControllerImpl.waitAndPerformBuild(BuildAgentControllerImpl.java:162)
    at com.atlassian.bamboo.v2.build.agent.DefaultBuildAgent.lambda$start$0(DefaultBuildAgent.java:122)
    at com.atlassian.bamboo.utils.BambooRunnables$1.run(BambooRunnables.java:48)
    at com.atlassian.bamboo.security.ImpersonationHelper.runWith(ImpersonationHelper.java:26)
    at com.atlassian.bamboo.security.ImpersonationHelper.runWithSystemAuthority(ImpersonationHelper.java:17)
    at com.atlassian.bamboo.security.ImpersonationHelper$1.run(ImpersonationHelper.java:41)
    at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.base/java.lang.String.substring(Unknown Source)
    at org.jfrog.build.extractor.nuget.extractor.NugetRun.addSourceToConfigFile(NugetRun.java:222)
    at org.jfrog.build.extractor.nuget.extractor.NugetRun.prepareConfig(NugetRun.java:211)
    at org.jfrog.build.extractor.nuget.extractor.NugetRun.prepareAndRunCmd(NugetRun.java:193)
    at org.jfrog.build.extractor.nuget.extractor.NugetRun.execute(NugetRun.java:175)
    ... 19 more 

排查与解决步骤

1. 校验NuGet源地址配置

  • 确认插件中填写的Artifactory仓库地址与脚本中使用的http://artifactoryRepoAddress完全一致,包括协议(http/https)、端口、结尾是否带斜杠,避免多余空格或特殊字符
  • 若使用Bamboo变量传递地址,先替换为硬编码的完整地址测试,排除变量解析失败的可能

2. 清理并修复NuGet配置文件

  • 构建代理机器上的NuGet配置文件可能存在格式错误或异常条目,路径一般为:
    • Windows: %APPDATA%\NuGet\NuGet.Config
    • Linux/macOS: ~/.nuget/NuGet/NuGet.Config
  • 备份现有配置后,临时移除无关的源条目,只保留必要的默认源,再重新执行插件构建
  • 检查配置文件是否存在XML格式错误(比如未闭合的标签),这类错误会导致插件解析配置时失败

3. 检查插件与NuGet版本兼容性

  • 确认Artifactory Bamboo插件版本是否支持当前构建代理上的NuGet版本,部分旧插件对NuGet 5.x+的兼容性较差
  • 尝试升级插件到最新稳定版,或降级NuGet到插件官方文档推荐的版本
  • 对比脚本与插件调用的NuGet版本:插件默认使用系统PATH中的NuGet,检查代理机器的PATH顺序,确保插件调用的是与脚本一致的NuGet版本

4. 手动指定NuGet源,跳过插件自动配置

  • 若插件提供附加参数或高级配置选项,手动添加-Source http://artifactoryRepoAddress,覆盖插件自动添加源的逻辑
  • 部分插件版本允许关闭自动配置NuGet源的功能,优先使用手动指定的源地址

5. 验证Artifactory仓库的权限与认证

  • 确认插件配置的Artifactory账号拥有目标NuGet远程仓库的读取权限,脚本可能使用了默认系统凭据,而插件的凭据配置有误
  • 若仓库需要认证,检查插件中填写的用户名、密码或API Key是否正确,避免特殊字符导致解析异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:36:09