java - Sonar 服务器无法启动,依赖项不满足 : class java. lang.String

标签 java maven sonarqube

我正在尝试为 Sonar 编写一个插件来定义一个新模型。我从使用 Maven 编译并运行良好的引用插件开始。当我添加我的类 TestmodelDefinition.java 时,它仍然可以正常编译,但是当我重新启动服务器时,我得到一个 503 错误页面并且在日志中有一个堆栈跟踪:

org.picocontainer.injectors.AbstractInjector$UnsatisfiableDependenciesException: com.mycompany.sonar.reference.models.TestModelDefinition has unsatisfied dependency: class java.lang.String among unsatisfiable dependencies: [[class java.lang.String]] where org.picocontainer.DefaultPicoContainer@312cfd62:119<I<org.picocontainer.DefaultPicoContainer@12e90e23:7<I<org.picocontainer.DefaultPicoContainer@49b9a538:19<| was the leaf container being asked for dependencies.
        at org.picocontainer.injectors.ConstructorInjector.getGreediestSatisfiableConstructor(ConstructorInjector.java:188) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.ConstructorInjector.getGreediestSatisfiableConstructor(ConstructorInjector.java:110) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.ConstructorInjector.access$100(ConstructorInjector.java:51) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:308) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:274) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:341) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:689) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:638) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:617) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.parameters.CollectionComponentParameter.getArrayInstance(CollectionComponentParameter.java:311) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.parameters.CollectionComponentParameter.access$100(CollectionComponentParameter.java:48) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.parameters.CollectionComponentParameter$1.resolveInstance(CollectionComponentParameter.java:138) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:141) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:76) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:286) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:312) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:274) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:341) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:689) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:638) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:617) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.containers.ImmutablePicoContainer.getComponent(ImmutablePicoContainer.java:40) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:704) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:638) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:627) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.parameters.BasicComponentParameter$1.resolveInstance(BasicComponentParameter.java:105) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:136) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:76) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:286) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:312) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:274) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:341) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.DefaultPicoContainer.instantiateComponentAsIsStartable(DefaultPicoContainer.java:1014) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.DefaultPicoContainer.addAdapterIfStartable(DefaultPicoContainer.java:1006) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:983) ~[picocontainer-2.10.2.jar:na]
        at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:746) ~[picocontainer-2.10.2.jar:na]
        at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:70) ~[sonar-plugin-api-2.13.1.jar:na]
        at org.sonar.server.platform.Platform.executeStartupTasks(Platform.java:236) ~[classes/:na]
        at org.sonar.server.platform.Platform.start(Platform.java:116) ~[classes/:na]
        at org.sonar.server.platform.PlatformLifecycleListener.contextInitialized(PlatformLifecycleListener.java:33) [classes/:na]
        at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548) [jetty-6.1.25.jar:6.1.25]
        at org.mortbay.jetty.servlet.Context.startContext(Context.java:136) [jetty-6.1.25.jar:6.1.25]
        at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1272) [jetty-6.1.25.jar:6.1.25]
        at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) [jetty-6.1.25.jar:6.1.25]
        at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:489) [jetty-6.1.25.jar:6.1.25]
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) [jetty-util-6.1.25.jar:6.1.25]
        at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) [jetty-6.1.25.jar:6.1.25]
        at org.mortbay.jetty.Server.doStart(Server.java:224) [jetty-6.1.25.jar:6.1.25]
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) [jetty-util-6.1.25.jar:6.1.25]
        at org.sonar.application.JettyEmbedder.start(JettyEmbedder.java:79) [sonar-application-2.13.1.jar:na]
        at org.sonar.application.StartServer.main(StartServer.java:50) [sonar-application-2.13.1.jar:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_20]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.6.0_20]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.6.0_20]
        at java.lang.reflect.Method.invoke(Method.java:616) ~[na:1.6.0_20]
        at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240) [wrapper-3.2.3.jar:3.2.3]
        at java.lang.Thread.run(Thread.java:636) [na:1.6.0_20]

我在 Windows XP 机器上使用 Eclipse 编写代码,但它是在 64 位 Ubuntu 10.04 服务器版本上编译和运行的。 我试过简单地添加

import java.lang.*;

但这并没有解决任何问题。

编辑: 这是测试模型定义:

package com.mycompany.sonar.reference.models;

import java.lang.*;

import org.sonar.api.qualitymodel.*;
import org.sonar.api.measures.*;

public final class TestModelDefinition extends ModelDefinition {

  public TestModelDefinition(String name) {
    super(name);
    // TODO Auto-generated constructor stub
  }

  @Override
  public Model createModel() {

    Model testModel = Model.createByName("ISO 9126 way");

    String parentName = "Maintainability";
    String name = "Testability";

    Characteristic parentCharacteristic = Characteristic.createByName(parentName);
    Characteristic newCharacteristic = Characteristic.createByName(name);

    CharacteristicProperty newProperty = CharacteristicProperty.create("Tests");

    parentCharacteristic.setEnabled(true);
    newCharacteristic.setEnabled(true);
    parentCharacteristic.addChild(newCharacteristic);

    testModel.addCharacteristic(parentCharacteristic);
    testModel.addCharacteristic(newCharacteristic);

    return testModel;
  }

}

最佳答案

String不是Pico容器可以注入(inject)的类型。您应该为您的类提供默认构造函数。

关于java - Sonar 服务器无法启动,依赖项不满足 : class java. lang.String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9679923/

相关文章:

java - 静态变量搞乱了一切

maven - 由于elasticSearch客户端中的记录器依赖错误,无法与ElasticSearch 7.3.0连接

kubernetes - 具有 LDAP 身份验证的 Kubernetes 上的 SonarQube

java - 如何在 Tomcat 中静默删除请求?

java - JavaFx scenebuilder 可以用来创建 Java 代码而不是 FXML

java - Java 中二维不规则数组的越界异常

java - 两个Eclipse项目之间的依赖关系: how to add one's classpath into second's?

java - Eclipse (pom.xml) 中的 Maven 错误 : Failure to transfer org. apache.maven.plugins :maven-surefire-plugin:pom:2. 12.4

java - Sonar Web Service API,按开发者过滤数据

maven - Travis CI SonarCloud错误 "Project was never analyzed. A regular analysis is required before a branch analysis"