2015-05-25 4 views
7

Я разрабатываю плагин для SonarQube 4.5.4/5.0.1. Я хотел бы использовать плагин sonar-dev для загрузки файла JAR и быстрого перезапуска сервера SQ. Плагин использует REST API (/api/system/restart), который активируется установкой sonar.dev=true.SonarQube не запускается во время разработки плагина

Вот конфиг:

<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> 

Проблема заключается в том, что сервер выходит из строя после каждой перезагрузки попытки, и я должен перезапустить его вручную, что приводит к разочарованию и истощает мою производительность. Вот stacktrace, который возвращается после каждого следующего запроса после перезапуска.

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, это может быть связано с загрузчиком класса, который блокирует файлы. Любую подсказку или обходное решение заслуживают высокой оценки.

+0

Кажется, что они связаны: http://stackoverflow.com/questions/11273303/java-classloader-dilemma-with-locked-jars и http://stackoverflow.com/questions/3216780/problem-reloading-a -jar-using-urlclassloader – Sergey

ответ

6

Плагин Java, похоже, блокирует его загрузчик классов. Удалив его, удалив extensions/plugins/sonar-java-plugin-3.0.jar, следует исправить проблему.

+0

Эй, это сработало. Однако мне пришлось изменить область зависимости 'java-squid: 3.2' от' compile', которую я ранее задал 'provided'. Мой вес пакета изменился с «29KB» на «2.4MB», потому что также были включены другие библиотеки. (транзитивные депо?) Это путь? Будет ли это работать, когда SQ будет иметь разные версии одной и той же библиотеки java-squid из разных плагинов? –

+0

Кроме того, я только что узнал, что мой плагин полагается на Java-плагин, так как он добавляет несколько дополнительных правил. Поэтому мой плагин не работает без него. :-) –

+1

Это действительно не помогает в моем конкретном случае, так как я зависим от этого плагина, но он решает проблему сама. Билет должен быть поднят для исправления java-плагина. Спасибо за внимание! Для любопытных я решил пойти с модульной версией плагинов, чтобы ускорить работу, и она работает хорошо. Во время разработки не требуется сервер. –

Смежные вопросы