Tôi đang phát triển plugin cho SonarQube 4.5.4/5.0.1. Tôi muốn sử dụng plugin sonar-dev để tải lên tệp JAR và khởi động lại máy chủ SQ nhanh chóng. Plugin sử dụng API REST (/api/system/restart
), được bật bằng cách đặt thuộc tính sonar.dev=true
.SonarQube không khởi động được trong khi phát triển plugin
Dưới đây là cấu hình:
<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>
Vấn đề là máy chủ bị treo sau mỗi lần khởi động lại nỗ lực và tôi phải khởi động lại nó bằng tay, mà là bực bội và cống suất của tôi. Đây là stacktrace được trả về trên mỗi yêu cầu sau đây sau khi "khởi động lại".
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 logsbắt đầu từ dòng 71.
Theo @Simon Brandhof, nó có thể được kết nối với bộ nạp lớp, mà khóa tập tin. Bất kỳ đầu mối hoặc workaround được nhiều đánh giá cao.
Chúng dường như có liên quan: http://stackoverflow.com/questions/11273303/java-classloader-dilemma-with-locked-jars và http://stackoverflow.com/questions/3216780/problem-reloading-a -jar-using-urlclassloader – Sergey