【问题标题】:SonarQube fails to restart during plugin developmentSonarQube 在插件开发期间无法重新启动
【发布时间】:2015-08-06 21:17:37
【问题描述】:

我正在为 SonarQube 4.5.4 / 5.0.1 开发一个插件。我想使用sonar-dev插件上传一个JAR文件并快速重启SQ服务器。插件使用 REST API (/api/system/restart),通过设置 sonar.dev=true 属性启用。

这是配置:

<plugin>
    <groupId>org.codehaus.sonar</groupId>
    <artifactId>sonar-dev-maven-plugin</artifactId>
    <version>1.8</version>
    <configuration>
        <sonarHome>F:\sonarqube-5.1\sonarqube-5.1</sonarHome>
    </configuration>
</plugin>

问题是每次重新启动尝试后服务器都会崩溃,我必须手动重新启动它,这令人沮丧并降低了我的工作效率。这是“重启”后每个后续请求返回的堆栈跟踪。

org.jruby.exceptions.RaiseException: (NoMethodError) undefined method `controllers' for nil:NilClass
    at org.jruby.RubyKernel.method_missing(org/jruby/RubyKernel.java:255)
    at RUBY.method_missing(F:/sonarqube-5.1/sonarqube-5.1/web/WEB-INF/gems/gems/activesupport-2.3.15/lib/active_support/whiny_nil.rb:52)
    at RUBY.add_java_ws_routes(F:/sonarqube-5.1/sonarqube-5.1/web/WEB-INF/config/../lib/java_ws_routing.rb:34)
    at RUBY.reload(F:/sonarqube-5.1/sonarqube-5.1/web/WEB-INF/config/../lib/java_ws_routing.rb:58)
    at RUBY.reload_application(F:/sonarqube-5.1/sonarqube-5.1/web/WEB-INF/gems/gems/actionpack-2.3.15/lib/action_controller/dispatcher.rb:58)
    at RUBY.run(F:/sonarqube-5.1/sonarqube-5.1/web/WEB-INF/gems/gems/actionpack-2.3.15/lib/action_controller/reloader.rb:42)
    at RUBY.call(F:/sonarqube-5.1/sonarqube-5.1/web/WEB-INF/gems/gems/actionpack-2.3.15/lib/action_controller/dispatcher.rb:108)
    at RUBY.serve_rails(file:/F:/sonarqube-5.1/sonarqube-5.1/lib/server/jruby-rack-1.1.13.2.jar!/rack/adapter/rails.rb:34)
    at RUBY.call(file:/F:/sonarqube-5.1/sonarqube-5.1/lib/server/jruby-rack-1.1.13.2.jar!/rack/adapter/rails.rb:39)
    at RUBY.call(file:/F:/sonarqube-5.1/sonarqube-5.1/lib/server/jruby-rack-1.1.13.2.jar!/rack/handler/servlet.rb:22)

And here's what happens in logs 从第 71 行开始。

根据@Simon Brandhof,它可能与锁定文件的类加载器连接。非常感谢任何线索或解决方法。

【问题讨论】:

标签: plugins sonarqube


【解决方案1】:

Java 插件似乎锁定了它的类加载器。通过删除extensions/plugins/sonar-java-plugin-3.0.jar 卸载它应该可以解决问题。

【讨论】:

  • 嘿,它成功了。但是我不得不将java-squid:3.2 依赖的范围更改为compile,我之前已将其设置为provided。我的包重量从29KB 更改为2.4MB,因为还包括了许多其他库。 (传递的部门?)这是要走的路吗?当 SQ 有来自不同插件的相同 java-squid 库的不同版本时,它会起作用吗?
  • 此外,我刚刚了解到我的插件依赖于 Java 插件,因为它添加了一些额外的规则。因此,没有它我的插件就无法工作。 :-)
  • 在我的特殊情况下它并没有真正的帮助,因为我依赖于那个插件,但它本身解决了问题。应该提高票证以修复 java-plugin。谢谢你的努力!对于好奇的人,我决定使用单元测试驱动的插件开发来加快速度,并且效果很好。开发过程中不需要服务器。
猜你喜欢
  • 2014-09-27
  • 1970-01-01
  • 2015-07-18
  • 2015-10-13
  • 1970-01-01
  • 2017-04-22
  • 2015-07-02
相关资源
最近更新 更多