[prev in list] [next in list] [prev in thread] [next in thread] 

List:       sonar-dev
Subject:    Re: [sonar-dev] Error running local analysis
From:       Michael_Zöller <michael2.zoeller () gmail ! com>
Date:       2015-01-28 10:29:25
Message-ID: CAAte1QqVjAf9nbrk1fAL7Op-KpZxRh=NUNwL+6K0n=STsr2pfg () mail ! gmail ! com
[Download RAW message or body]

Hi Julien,

thanks again. We were able to solve the issue with your second option.
Bye,
Michael

2015-01-28 9:48 GMT+01:00 Julien HENRY <julien.henry@sonarsource.com>:

> Hi Michael,
>
> Eclipse plugin internally use SQ Runner to perform the analysis, even for
> a Maven project. So your internal plugin should support "non Maven"
> environment.
>
> 2 options:
>   * if your batch component is completely dependent on Maven, then you ca=
n
> annotate it with @SupportedEnvironment("maven"). In this case the class
> will not be loaded by pico when analysis is no started by Maven.
>   * if your batch component can fallback and support non Maven analysis
> then you have to provide two constructors (using @Nullable is not enough
> for pico). One constructor having MavenProject parameter, and a second on=
e
> without it.
>
> Read "How does PicoContainer decide what constructor to use?" here:
> http://picocontainer.com/faq.html
>
> ++
>
> Julien
>
> 2015-01-28 9:19 GMT+01:00 Michael Z=C3=B6ller <michael2.zoeller@gmail.com=
>:
>
>> Hi all,
>>
>> we have migrated our custom rules from PMD to Sonar api to be able to do
>> the upgrade from 4.1.2 to 4.5.1.
>> For some rules we need to access the maven classpath of our projects.
>> This works on the server with a BatchExtension that gets a MavenProject =
in
>> its constructor. The local analysis in Eclipse prdocues the following er=
ror:
>> Exception in thread "main" org.sonar.runner.impl.RunnerException: Unable
>> to execute Sonar
>> at
>> org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.ja=
va:91)
>> at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
>> at java.security.AccessController.doPrivileged(Native Method)
>> at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
>> at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
>> at
>> org.sonar.runner.impl.BatchLauncherMain.execute(BatchLauncherMain.java:4=
1)
>> at org.sonar.runner.impl.BatchLauncherMain.main(BatchLauncherMain.java:5=
9)
>> Caused by:
>> org.picocontainer.injectors.AbstractInjector$[OURBATCHEXTENSION]  has
>> unsatisfied dependency 'class org.apache.maven.project.MavenProject' for
>> constructor
>> 'public OURBATCHEXTENSION(org.apache.maven.project.MavenProject)'
>> from org.picocontainer.DefaultPicoContainer@46ccbe9a
>> :181<[Immutable]:org.picocontainer.DefaultPicoContainer@48563d2
>> :224<[Immutable]:org.picocontainer.DefaultPicoContainer@378bffef
>> :16<[Immutable]:org.picocontainer.DefaultPicoContainer@7abfd8b7:95<|
>> at
>> org.picocontainer.injectors.ConstructorInjector.getGreediestSatisfiableC=
onstructor(ConstructorInjector.java:191)
>> at
>> org.picocontainer.injectors.ConstructorInjector.getGreediestSatisfiableC=
onstructor(ConstructorInjector.java:110)
>> at
>> org.picocontainer.injectors.ConstructorInjector.access$100(ConstructorIn=
jector.java:51)
>> at
>> org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjecto=
r.java:331)
>> at
>> org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependency=
Guard.observe(AbstractInjector.java:270)
>> at
>> org.picocontainer.injectors.ConstructorInjector.getComponentInstance(Con=
structorInjector.java:364)
>> at
>> org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.ge=
tComponentInstance(AbstractInjectionFactory.java:56)
>> at
>> org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(Abstra=
ctBehavior.java:64)
>> at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:9=
1)
>> at
>> org.picocontainer.DefaultPicoContainer.getLocalInstance(DefaultPicoConta=
iner.java:605)
>> at
>> org.picocontainer.DefaultPicoContainer.getComponents(DefaultPicoContaine=
r.java:586)
>> at
>> org.sonar.api.platform.ComponentContainer.getComponentsByType(ComponentC=
ontainer.java:206)
>> at
>> org.sonar.api.batch.BatchExtensionDictionnary.completeBatchExtensions(Ba=
tchExtensionDictionnary.java:104)
>> at
>> org.sonar.api.batch.BatchExtensionDictionnary.getExtensions(BatchExtensi=
onDictionnary.java:98)
>> at
>> org.sonar.api.batch.BatchExtensionDictionnary.selectMavenPluginHandlers(=
BatchExtensionDictionnary.java:74)
>> at
>> org.sonar.batch.scan.maven.MavenPluginsConfigurator.execute(MavenPlugins=
Configurator.java:48)
>> at
>> org.sonar.batch.phases.PhaseExecutor.executeMavenPhase(PhaseExecutor.jav=
a:171)
>> at org.sonar.batch.phases.PhaseExecutor.execute(PhaseExecutor.java:105)
>> at
>> org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContaine=
r.java:194)
>> at
>> org.sonar.api.platform.ComponentContainer.startComponents(ComponentConta=
iner.java:92)
>> at
>> org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.jav=
a:77)
>> at
>> org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java=
:233)
>> at
>> org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanCon=
tainer.java:228)
>> at
>> org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContai=
ner.java:221)
>> at
>> org.sonar.api.platform.ComponentContainer.startComponents(ComponentConta=
iner.java:92)
>> at
>> org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.jav=
a:77)
>> at org.sonar.batch.scan.ScanTask.scan(ScanTask.java:64)
>> at org.sonar.batch.scan.ScanTask.execute(ScanTask.java:51)
>> at
>> org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:=
125)
>> at
>> org.sonar.api.platform.ComponentContainer.startComponents(ComponentConta=
iner.java:92)
>> at
>> org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.jav=
a:77)
>> at
>> org.sonar.batch.bootstrap.BootstrapContainer.executeTask(BootstrapContai=
ner.java:173)
>> at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:95)
>> at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
>> at
>> org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:45=
)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav=
a:57)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor=
Impl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:606)
>> at
>> org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.ja=
va:87)
>> ... 6 more
>>
>> The dependency is annotated with @Nullable.
>> Any ideas?
>> Bye,
>> Michael
>>
>
>

[Attachment #3 (text/html)]

<div dir="ltr">Hi Julien,<div><br></div><div>thanks again. We were able to solve the \
issue with your second option.</div><div>Bye,</div><div>Michael</div></div><div \
class="gmail_extra"><br><div class="gmail_quote">2015-01-28 9:48 GMT+01:00 Julien \
HENRY <span dir="ltr">&lt;<a href="mailto:julien.henry@sonarsource.com" \
target="_blank">julien.henry@sonarsource.com</a>&gt;</span>:<br><blockquote \
class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div>Hi \
Michael,<br><br></div>Eclipse plugin internally use SQ Runner to perform the \
analysis, even for a Maven project. So your internal plugin should support &quot;non \
Maven&quot; environment.<br><br></div>2 options:<br></div>   * if your batch \
component is completely dependent on Maven, then you can annotate it with \
@SupportedEnvironment(&quot;maven&quot;). In this case the class will not be loaded \
by pico when analysis is no started by Maven.<br></div>   * if your batch component \
can fallback and support non Maven analysis then you have to provide two constructors \
(using @Nullable is not enough for pico). One constructor having MavenProject \
parameter, and a second one without it.<br><br>Read &quot;How does PicoContainer \
decide what constructor to use?&quot; here: <a \
href="http://picocontainer.com/faq.html" \
target="_blank">http://picocontainer.com/faq.html</a><br><br></div>++<span \
class="HOEnZb"><font color="#888888"><br><br></font></span></div><span \
class="HOEnZb"><font color="#888888">Julien<br></font></span></div><div \
class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div \
class="gmail_quote">2015-01-28 9:19 GMT+01:00 Michael Zöller <span dir="ltr">&lt;<a \
href="mailto:michael2.zoeller@gmail.com" \
target="_blank">michael2.zoeller@gmail.com</a>&gt;</span>:<br><blockquote \
class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex"><div dir="ltr">Hi all,<div><br></div><div>we have migrated \
our custom rules from PMD to Sonar api to be able to do the upgrade from 4.1.2 to \
4.5.1.</div><div>For some rules we need to access the maven classpath of our \
projects. This works on the server with a BatchExtension that gets a MavenProject in \
its constructor. The local analysis in Eclipse prdocues the following \
error:</div><div><div>Exception in thread &quot;main&quot; \
org.sonar.runner.impl.RunnerException: Unable to execute Sonar</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)</div><div><span \
style="white-space:pre-wrap">	</span>at \
java.security.AccessController.doPrivileged(Native Method)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.runner.impl.BatchLauncherMain.execute(BatchLauncherMain.java:41)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.runner.impl.BatchLauncherMain.main(BatchLauncherMain.java:59)</div><div>Caused \
by: org.picocontainer.injectors.AbstractInjector$[OURBATCHEXTENSION]   has \
unsatisfied dependency &#39;class org.apache.maven.project.MavenProject&#39; for \
constructor &#39;public  \
OURBATCHEXTENSION(org.apache.maven.project.MavenProject)&#39; from  \
org.picocontainer.DefaultPicoContainer@46ccbe9a:181&lt;[Immutable]:org.picocontainer.D \
efaultPicoContainer@48563d2:224&lt;[Immutable]:org.picocontainer.DefaultPicoContainer@ \
378bffef:16&lt;[Immutable]:org.picocontainer.DefaultPicoContainer@7abfd8b7:95&lt;|</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.picocontainer.injectors.ConstructorInjector.getGreediestSatisfiableConstructor(ConstructorInjector.java:191)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.picocontainer.injectors.ConstructorInjector.getGreediestSatisfiableConstructor(ConstructorInjector.java:110)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.picocontainer.injectors.ConstructorInjector.access$100(ConstructorInjector.java:51)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:331)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.picocontainer.DefaultPicoContainer.getLocalInstance(DefaultPicoContainer.java:605)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.picocontainer.DefaultPicoContainer.getComponents(DefaultPicoContainer.java:586)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.api.platform.ComponentContainer.getComponentsByType(ComponentContainer.java:206)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.api.batch.BatchExtensionDictionnary.completeBatchExtensions(BatchExtensionDictionnary.java:104)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.api.batch.BatchExtensionDictionnary.getExtensions(BatchExtensionDictionnary.java:98)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.api.batch.BatchExtensionDictionnary.selectMavenPluginHandlers(BatchExtensionDictionnary.java:74)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.batch.scan.maven.MavenPluginsConfigurator.execute(MavenPluginsConfigurator.java:48)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.batch.phases.PhaseExecutor.executeMavenPhase(PhaseExecutor.java:171)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.batch.phases.PhaseExecutor.execute(PhaseExecutor.java:105)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:194)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:233)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:228)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:221)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.batch.scan.ScanTask.scan(ScanTask.java:64)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.batch.scan.ScanTask.execute(ScanTask.java:51)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:125)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.batch.bootstrap.BootstrapContainer.executeTask(BootstrapContainer.java:173)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:95)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:45)</div><div><span \
style="white-space:pre-wrap">	</span>at \
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</div><div><span \
style="white-space:pre-wrap">	</span>at \
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)</div><div><span \
style="white-space:pre-wrap">	</span>at \
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)</div><div><span \
style="white-space:pre-wrap">	</span>at \
java.lang.reflect.Method.invoke(Method.java:606)</div><div><span \
style="white-space:pre-wrap">	</span>at \
org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87)</div><div><span \
style="white-space:pre-wrap">	</span>... 6 more</div></div><div><br></div><div>The \
dependency is annotated with @Nullable.</div><div>Any \
ideas?</div><div>Bye,</div><div>Michael</div></div> </blockquote></div><br></div>
</div></div></blockquote></div><br></div>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic