2015-05-25 23 views
7

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.

+0

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

Trả lời

6

Plugin Java dường như khóa trình nạp lớp của nó. Gỡ cài đặt bằng cách xóa extensions/plugins/sonar-java-plugin-3.0.jar, nên khắc phục sự cố.

+0

Xin chào, nó đã hoạt động. Tuy nhiên tôi đã phải thay đổi phạm vi của 'java-mực: 3.2' phụ thuộc vào' biên dịch', mà trước đây tôi đã đặt thành 'được cung cấp'. Trọng lượng gói của tôi đã thay đổi từ '29KB' thành' 2.4MB', bởi vì nhiều thư viện khác cũng được bao gồm. (transitive deps?) Có phải là con đường để đi? Nó sẽ hoạt động, khi SQ sẽ có các phiên bản khác nhau của cùng một thư viện 'java-squid' từ các plugin khác nhau? –

+0

Hơn nữa, tôi chỉ biết rằng plugin của tôi dựa trên plugin Java, vì nó bổ sung thêm vài quy tắc bổ sung. Vì vậy, plugin của tôi không hoạt động mà không có nó. :-) –

+1

Nó không thực sự giúp đỡ trong trường hợp cụ thể của tôi, vì tôi phụ thuộc vào plugin đó, nhưng nó giải quyết vấn đề chính nó. Vé phải được nâng lên để sửa lỗi java-plugin. Cảm ơn bạn đã nỗ lực! Đối với những người tò mò, tôi quyết định đi với phát triển plugin thử nghiệm đơn vị điều khiển để tăng tốc độ và nó hoạt động tốt. Không cần cho máy chủ trong quá trình phát triển. –

Các vấn đề liên quan