Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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 5.6.1在使用Ant编译Java7项目时抛出了错误的主要版本_Java_Ant_Sonarqube_Sonarqube5.6 - Fatal编程技术网

SonarQube 5.6.1在使用Ant编译Java7项目时抛出了错误的主要版本

SonarQube 5.6.1在使用Ant编译Java7项目时抛出了错误的主要版本,java,ant,sonarqube,sonarqube5.6,Java,Ant,Sonarqube,Sonarqube5.6,我有一份Jenkins的工作,使用Ant来构建一个项目 该项目使用Java7。Jenkins作业的运行时也是Java7。我使用的是运行在Java8上的SonarQube 5.6.1。SonarQube服务器运行正常 然而,当在Ant中调用目标时,我得到以下错误,这显然是由于Java版本不匹配(JVMCFR003错误的主版本)。我不知道如何解决这个问题 sonar: parsing buildfile jar:file:/opt/Ant_1.9.7/lib/sonar-ant-task-2.2.j

我有一份Jenkins的工作,使用Ant来构建一个项目

该项目使用Java7。Jenkins作业的运行时也是Java7。我使用的是运行在Java8上的SonarQube 5.6.1。SonarQube服务器运行正常

然而,当在Ant中调用
目标时,我得到以下错误,这显然是由于Java版本不匹配(
JVMCFR003错误的主版本
)。我不知道如何解决这个问题

sonar:
parsing buildfile jar:file:/opt/Ant_1.9.7/lib/sonar-ant-task-2.2.jar!/org/sonar/ant/antlib.xml with URI = jar:file:/opt/Ant_1.9.7/lib/sonar-ant-task-2.2.jar!/org/sonar/ant/antlib.xml from a zip file
parsing buildfile jar:file:/opt/Ant_1.9.7/lib/sonar-ant-task-2.2.jar!/org/sonar/ant/antlib.xml with URI = jar:file:/opt/Ant_1.9.7/lib/sonar-ant-task-2.2.jar!/org/sonar/ant/antlib.xml from a zip file
[available] Found: /var/lib/jenkins/slave/workspace/Build/Component/Build-subcomponent/builds/com.mycompany.myproj.bootstrap.site/compile
parsing buildfile jar:file:/opt/Ant_1.9.7/lib/sonar-ant-task-2.2.jar!/org/sonar/ant/antlib.xml with URI = jar:file:/opt/Ant_1.9.7/lib/sonar-ant-task-2.2.jar!/org/sonar/ant/antlib.xml from a zip file
[sonar:sonar] Apache Ant(TM) version 1.9.7 compiled on April 9 2016
[sonar:sonar] SonarQube Ant Task version: 2.2
[sonar:sonar] Loaded from: file:/opt/Ant_1.9.7/lib/sonar-ant-task-2.2.jar
[sonar:sonar] INFO: Default locale: "en_US", source code encoding: "UTF-8" (analysis is platform dependent)
[sonar:sonar] INFO: Work directory: /var/lib/jenkins/slave/workspace/Build/Component/Build-subcomponent/com.mycompany.myproj.bootstrap.site/../builds/com.mycompany.myproj.bootstrap.site/sonar
[sonar:sonar] INFO: SonarQube Server 5.6.1

BUILD FAILED
/var/lib/jenkins/slave/workspace/Build/Component/Build-subcomponent/build/common.xml:229: java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; class=org/sonar/api/utils/SonarException, offset=6
    at java.lang.ClassLoader.defineClassImpl(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:324)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:155)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:712)
    at java.net.URLClassLoader.access$400(URLClassLoader.java:93)
    at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1164)
    at java.security.AccessController.doPrivileged(AccessController.java:492)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:595)
    at org.sonar.runner.impl.IsolatedClassloader.loadClass(IsolatedClassloader.java:94)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:731)
    at java.lang.J9VMInternals.verifyImpl(Native Method)
    at java.lang.J9VMInternals.verify(J9VMInternals.java:94)
    at java.lang.J9VMInternals.prepare(J9VMInternals.java:514)
    at java.lang.Class.getMethod(Class.java:1116)
    at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:85)
    at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
    at java.security.AccessController.doPrivileged(AccessController.java:400)
    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.ant.SonarTask.launchAnalysis(SonarTask.java:53)
    at org.sonar.ant.SonarTask.execute(SonarTask.java:48)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
    at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
    at java.lang.reflect.Method.invoke(Method.java:620)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at net.sf.antcontrib.logic.IfTask.execute(IfTask.java:197)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
    at java.lang.reflect.Method.invoke(Method.java:620)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:155)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
    at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
    at java.lang.reflect.Method.invoke(Method.java:620)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    at org.apache.tools.ant.Target.performTasks(Target.java:456)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1376)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1260)
    at org.apache.tools.ant.Main.runBuild(Main.java:854)
    at org.apache.tools.ant.Main.startAnt(Main.java:236)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:285)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:112)

问题是,我们谈论的是Jenkins作业,作业中的每个步骤都将使用用于该作业的Java版本。由于您使用Java 7运行作业,因此分析也使用Java 7运行&这与SonarQube 5.6+不兼容

最简单的方法是将分析从Ant脚本转移到SonarQube扫描仪构建步骤中;它将允许您从运行作业的版本中选择不同的Java版本

或者你也可以做到这一点


您的第三个选项是将作业分成两部分并使用共享工作区(配置>项目选项>高级>使用自定义工作区)

Hi G.Ann。我不确定我是否理解-这里的不匹配在哪里?为什么Ant插件依赖于SonarQube服务器的版本?换句话说,为什么不能
sonar-Ant-task-2.2.jar
be Java 7,分析Java 7代码,然后将分析结果上传到运行Java 8的SonarQube服务器?对我来说没意义。SQ 5.6.1的需求页面上说,“SonarQube Java Analyzer能够分析任何类型的Java源文件,而不管它们所遵循的Java版本如何。”
node() {
  def jdk8 = tool 'jdk-8u45'
  def jdk7 = tool 'jdk-7u70'
  withEnv(["PATH+JDK7=${jdk7}/bin"]) {
    sh 'ant [normal target here]'
  }
  withEnv(["PATH+JDK8=${jdk8}/bin"]) {
    sh 'ant [analysis target here]'
  }
}