ProjectMatrixAuthorizationStrategy 的 CannotResolveClassException

问题描述 投票:0回答:5

我试图通过从旧机器上添加备份来恢复新机器上的詹金斯。我从旧机器替换了新机器的 jenkins 主目录。当我启动詹金斯时,它给了我这个错误。

Caused: java.io.IOException: Unable to read /var/lib/jenkins/config.xml

还有

 Caused: hudson.util.HudsonFailedToLoad
Caused: org.jvnet.hudson.reactor.ReactorException

调试信息是 ---- 调试信息 ----

message             : hudson.security.ProjectMatrixAuthorizationStrategy
cause-exception     : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message       : hudson.security.ProjectMatrixAuthorizationStrategy
class               : hudson.model.Hudson
required-type       : hudson.model.Hudson
converter-type      : hudson.util.RobustReflectionConverter
path                : /hudson/authorizationStrategy
line number         : 11
version             : not available
-------------------------------

这就是我的 config.xml 的样子

<useSecurity>true</useSecurity>
  <authorizationStrategy class="hudson.security.ProjectMatrixAuthorizationStrategy">
    <permission>hudson.model.Hudson.Administer:visha</permission>
  </authorizationStrategy>

有人可以帮忙吗?

jenkins jenkins-plugins jenkins-pipeline
5个回答
5
投票

这通常发生在未安装或启用提供授权策略的插件时。

确保已安装

matrix-auth
插件且未禁用(
matrix-auth.jpi.disabled
中没有
$JENKINS_HOME/plugins/
文件(或类似文件))。


1
投票

如果新版本的插件与旧版本的 Jenkins 不兼容,则可能会发生这种情况。建议将Jenkins升级到最新版本。

我就是这样做的:

ssh jenkins "cd /tmp; wget https://updates.jenkins-ci.org/latest/jenkins.war"
ssh jenkins "cp /usr/share/jenkins/jenkins.war /tmp/jenkins.war.previous.version"
ssh jenkins "sudo systemctl status jenkins"
ssh jenkins "sudo cp /tmp/jenkins.war /usr/share/jenkins/"
ssh jenkins "sudo systemctl restart jenkins"

1
投票

如果你因为这个错误而无法登录,你可以在jenkins配置文件/config.xml中禁用安全性。 搜索

<useSecurity>true</useSecurity>
并将值更改为
false
。然后从命令行重新启动 jenkins,您应该能够登录并按照其他答案中的建议更改插件/身份验证配置。


0
投票

通常,当 Jenkins 版本和插件版本不匹配时,会出现此错误。

最好的解决方案是始终保持更新 Jenkins 和插件或根据 Jenkins 版本安装适当版本的 jenkins。

对于centos、Redhat、amazon Linux,请按照以下步骤操作。

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum update Jenkins. 

对于ubuntu机器,您可以按照hit3k给出的步骤操作。

cd /tmp; wget https://updates.jenkins-ci.org/latest/jenkins.war
cp /usr/share/jenkins/jenkins.war /tmp/jenkins.war.previous.version
sudo systemctl status jenkins
sudo cp /tmp/jenkins.war /usr/share/jenkins/
sudo systemctl restart jenkins

0
投票

保留 var/lib/jenkins/config.xml 的备份 ---> confg.xml.backup

像下面提到的那样评论这一行

sudo systemctl 停止詹金斯

sudo systemctl 重新启动詹金斯

打开网页并更新所有插件

稍后从备份文件中复制上述权限,然后重新启动詹金斯,您应该能够登录

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.