Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在SonarQube中执行java自定义规则插件_Java_Sonarqube - Fatal编程技术网

无法在SonarQube中执行java自定义规则插件

无法在SonarQube中执行java自定义规则插件,java,sonarqube,Java,Sonarqube,我是SonarQube的新手,我正在为SonarQube创建一个新的指标。 作为学习的一部分,我在SonarQube网站上尝试这些例子。 我正在尝试给出的例子 我在eclipse中使用了maven clean和maven build,并创建了jar文件。我将jar文件放在SonarQube服务器的“extension/plugins”目录中(我已经在Win7机器上本地安装了该服务器) 然后我使用SonarQube Runner将我的项目与SonarQube链接起来。我是如何得到这个错误的: C:

我是SonarQube的新手,我正在为SonarQube创建一个新的指标。 作为学习的一部分,我在SonarQube网站上尝试这些例子。 我正在尝试给出的例子

我在eclipse中使用了maven clean和maven build,并创建了jar文件。我将jar文件放在SonarQube服务器的“extension/plugins”目录中(我已经在Win7机器上本地安装了该服务器)

然后我使用SonarQube Runner将我的项目与SonarQube链接起来。我是如何得到这个错误的:

C:\xxx\Desktop\Workspace\sonar-test>sonar-runner  -e
C:\sonar-runner-2.4
SonarQube Runner 2.4
Java 1.6.0_21 Sun Microsystems Inc. (32-bit)
Windows 7 6.1 x86
INFO: Error stacktraces are turned on.
INFO: Runner configuration file: C:\sonar-runner-2.4\conf\sonar-runner.propertie
s
INFO: Project configuration file: C:\xxx\Desktop\Workspace\sona
r-test\sonar-project.properties
INFO: Default locale: "en_US", source code encoding: "UTF-8"
INFO: Work directory: C:\xxx\Desktop\Workspace\sonar-test\.\.so
nar
INFO: SonarQube Server 4.5.1
13:47:39.244 INFO  - Load global referentials...
13:47:39.546 INFO  - Load global referentials done: 308 ms
13:47:39.570 INFO  - User cache: C:\xxx\.sonar\cache
13:47:39.597 INFO  - Install plugins
13:47:39.994 INFO  - Install JDBC driver
13:47:40.012 INFO  - Create JDBC datasource for jdbc:h2:tcp://localhost/sonar
13:47:42.259 INFO  - Initializing Hibernate
13:47:45.201 INFO  - Load project referentials...
13:47:45.894 INFO  - Load project referentials done: 693 ms
13:47:45.896 INFO  - Load project settings
13:47:47.144 INFO  - Loading technical debt model...
13:47:47.195 INFO  - Loading technical debt model done: 51 ms
13:47:47.208 INFO  - Apply project exclusions
13:47:47.920 INFO  - -------------  Scan sonar-test
13:47:47.947 INFO  - Load module settings
13:47:49.148 INFO  - Loading rules...
13:47:50.030 INFO  - Loading rules done: 882 ms
13:47:50.106 INFO  - Configure Maven plugins
13:47:50.327 INFO  - Compare to previous analysis (2014-11-06)
13:47:50.352 INFO  - Compare over 30 days (2014-10-07, analysis of 2014-11-06 12
:28:06.816)
13:47:50.356 INFO  - No quality gate is configured.
13:47:50.840 INFO  - Base dir: C:\xxx\Desktop\Workspace\sonar-t
est\.
13:47:50.841 INFO  - Working dir: C:\xxx\Desktop\Workspace\sona
r-test\.\.sonar
13:47:50.846 INFO  - Source paths: src
13:47:50.847 INFO  - Source encoding: UTF-8, default locale: en_US
13:47:50.849 INFO  - Index files
13:47:51.001 INFO  - 2 files indexed
13:47:51.146 INFO  - Quality profile for java: Sonar way
13:47:51.171 INFO  - Sensor JavaSquidSensor...
13:47:51.363 INFO  - Java Main Files AST scan...
13:47:51.377 INFO  - 2 source files to be analyzed
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 13.831s
Final Memory: 8M/99M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
org.sonar.runner.impl.RunnerException: Unable to execute Sonar
        at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher
.java: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.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102
)
        at org.sonar.runner.api.Runner.execute(Runner.java:100)
        at org.sonar.runner.Main.executeTask(Main.java:70)
        at org.sonar.runner.Main.execute(Main.java:59)
        at org.sonar.runner.Main.main(Main.java:53)
Caused by: java.lang.NoSuchMethodError: org.sonar.plugins.java.api.tree.Tree.is(
[Lorg/sonar/plugins/java/api/tree/Tree$Kind;)Z
        at org.sonar.samples.java.ExampleCheck.visitMethod(ExampleCheck.java:69)

        at org.sonar.java.model.declaration.MethodTreeImpl.accept(MethodTreeImpl
.java:118)
        at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.
java:41)
        at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.
java:35)
        at org.sonar.plugins.java.api.tree.BaseTreeVisitor.visitClass(BaseTreeVi
sitor.java:64)
        at org.sonar.java.model.declaration.ClassTreeImpl.accept(ClassTreeImpl.j
ava:107)
        at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.
java:41)
        at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.
java:35)
        at org.sonar.plugins.java.api.tree.BaseTreeVisitor.visitCompilationUnit(
BaseTreeVisitor.java:50)
        at org.sonar.java.model.JavaTree$CompilationUnitTreeImpl.accept(JavaTree
.java:120)
        at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.
java:41)
        at org.sonar.samples.java.ExampleCheck.scanFile(ExampleCheck.java:51)
        at org.sonar.java.model.VisitorsBridge.visitFile(VisitorsBridge.java:91)

        at com.sonar.sslr.impl.ast.AstWalker.walkAndVisit(AstWalker.java:67)
        at org.sonar.java.ast.AstScanner.simpleScan(AstScanner.java:118)
        at org.sonar.java.ast.AstScanner.scan(AstScanner.java:83)
        at org.sonar.java.JavaSquid.scanSources(JavaSquid.java:135)
        at org.sonar.java.JavaSquid.scan(JavaSquid.java:128)
        at org.sonar.plugins.java.JavaSquidSensor.analyse(JavaSquidSensor.java:8
6)
        at org.sonar.batch.phases.SensorsExecutor.executeSensor(SensorsExecutor.
java:79)
        at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:7
0)
        at org.sonar.batch.phases.PhaseExecutor.execute(PhaseExecutor.java:119)
        at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanConta
iner.java:194)
        at org.sonar.api.platform.ComponentContainer.startComponents(ComponentCo
ntainer.java:92)
        at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.
java:77)
        at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.j
ava:233)
        at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScan
Container.java:228)
        at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanCon
tainer.java:221)
        at org.sonar.api.platform.ComponentContainer.startComponents(ComponentCo
ntainer.java:92)
        at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.
java: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.ja
va:125)
        at org.sonar.api.platform.ComponentContainer.startComponents(ComponentCo
ntainer.java:92)
        at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.
java:77)
        at org.sonar.batch.bootstrap.BootstrapContainer.executeTask(BootstrapCon
tainer.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
:48)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher
.java:87)
        ... 9 more
ERROR:
ERROR: Re-run SonarQube Runner using the -X switch to enable full debug logging.
根据本例,每当遇到以字母“Z”开头的方法和注释时,必须创建一个问题

我尝试用这样的输入创建一个类:

sample.java

package test;

public class Sample {

    public static void main(String[] args) {
        
        System.out.println("Test");
    }
    
    @Ztest(val="hi")
    public static void add()
    {
        System.out.println("Add Method");
    }
}
我还创建了一个注释文件:

Ztest.java

package test;

public @interface Ztest {
String val();
}
但是当我使用SonarQube运行程序执行时,我得到了上面的错误


请帮我解决这个问题。

NoSuchMethodError意味着类加载器找到了一个类,但缺少该方法。当您在运行时使用比您的规则编译时使用的库的旧或新版本时,会发生这种情况。如果在类路径上有同一个库的多个版本,这种情况仍然可能发生,因为类加载器只会加载该类一次,我不确定是否可以确定它将使用哪个版本

如果您查看java自定义规则的依赖项,它取决于sonar java插件版本2.5,请检查您的sonarqube实例是否具有此插件的相同版本


编辑tl;dr更新sonarqube java插件

您的依赖项有问题。您能尝试使用mvn clean install创建插件吗?谢谢您的回复。我试过了。但同样的错误!!为了使构建中断,您在代码中修改了哪些内容?我刚刚试过,它构建正确。我没有修改任何东西!只需使用maven clean and install运行代码。。每当遇到以“Z”开头的注释时,就会出现错误。如果我对该注释进行注释,则其工作正常。请不要用ping来骚扰别人