Owners plugin gives "Unsupported major.minor version 52.0" error while uploading change

162 views
Skip to first unread message

Sharath Gupta

unread,
Apr 12, 2017, 2:02:27 PM4/12/17
to Repo and Gerrit Discussion
I am trying to install Owners plugin on Gerrit 2.11.5. Machine running the Gerrit instance has JAVA 1.7.0_67. 
I compiled the plugin with the same Java version 1.7.0_67 and installed it on Gerrit. As soon as I query for open changes in web interface, I get "Internal server error" and get the following errors in the error_log.
Am I missing something here? Please give me some inputs.

[2017-04-11 21:12:49,422] INFO  com.google.gerrit.server.plugins.PluginLoader : Loaded plugin owners, version v2.11.5
[2017-04-11 21:19:04,249] INFO  com.vmware.gerrit.owners.OwnersStoredValues : Initializing OwnerStoredValues
[2017-04-11 21:19:09,804] WARN  org.eclipse.jetty.servlet.ServletHandler : Error for /changes/2428/detail
java.lang.UnsupportedClassVersionError: org/gitective/core/BlobUtils : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at com.vmware.gerrit.owners.common.PathOwners.getOwners(PathOwners.java:149)
at com.vmware.gerrit.owners.common.PathOwners.fetchOwners(PathOwners.java:71)
at com.vmware.gerrit.owners.common.PathOwners.<init>(PathOwners.java:49)
at com.vmware.gerrit.owners.OwnersStoredValues$1.createValue(OwnersStoredValues.java:44)
at com.vmware.gerrit.owners.OwnersStoredValues$1.createValue(OwnersStoredValues.java:35)
at com.google.gerrit.rules.StoredValue.get(StoredValue.java:64)
at gerrit_owners.PRED_owner_path_1.exec(PRED_owner_path_1.java:38)
at com.googlecode.prolog_cafe.lang.PrologControl.executePredicate(PrologControl.java:154)
at com.googlecode.prolog_cafe.lang.BufferingPrologControl.run(BufferingPrologControl.java:147)
at com.googlecode.prolog_cafe.lang.BufferingPrologControl.all(BufferingPrologControl.java:121)
at com.google.gerrit.server.project.SubmitRuleEvaluator.evaluateImpl(SubmitRuleEvaluator.java:466)
at com.google.gerrit.server.project.SubmitRuleEvaluator.evaluate(SubmitRuleEvaluator.java:222)
at com.google.gerrit.server.change.ChangeJson.submitRecords(ChangeJson.java:437)
at com.google.gerrit.server.change.ChangeJson.initLabels(ChangeJson.java:494)
at com.google.gerrit.server.change.ChangeJson.labelsForOpenChange(ChangeJson.java:465)
at com.google.gerrit.server.change.ChangeJson.labelsFor(ChangeJson.java:455)
at com.google.gerrit.server.change.ChangeJson.toChangeInfo(ChangeJson.java:387)
at com.google.gerrit.server.change.ChangeJson.format(ChangeJson.java:238)
at com.google.gerrit.server.change.ChangeJson.format(ChangeJson.java:227)
at com.google.gerrit.server.change.ChangeJson.format(ChangeJson.java:206)
at com.google.gerrit.server.change.GetChange.apply(GetChange.java:46)
at com.google.gerrit.server.change.GetDetail.apply(GetDetail.java:50)
at com.google.gerrit.server.change.GetDetail.apply(GetDetail.java:26)
at com.google.gerrit.httpd.restapi.RestApiServlet.service(RestApiServlet.java:324)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:287)
at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:277)
at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:182)
at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
at com.google.gerrit.httpd.GetUserFilter.doFilter(GetUserFilter.java:82)
at com.google.gwtexpui.server.CacheControlFilter.doFilter(CacheControlFilter.java:73)
at com.google.gerrit.httpd.RunAsFilter.doFilter(RunAsFilter.java:117)
at com.google.gerrit.httpd.RequireSslFilter.doFilter(RequireSslFilter.java:68)
at com.google.gerrit.httpd.AllRequestFilter$FilterProxy$1.doFilter(AllRequestFilter.java:64)
at com.google.gerrit.httpd.AllRequestFilter$FilterProxy.doFilter(AllRequestFilter.java:57)
at com.google.gerrit.httpd.RequestContextFilter.doFilter(RequestContextFilter.java:75)
at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:119)
at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:133)
at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:130)
at com.google.inject.servlet.GuiceFilter$Context.call(GuiceFilter.java:203)
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:130)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:95)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:497)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.lang.Thread.run(Thread.java:745)
[2017-04-11 21:19:09,806] ERROR com.google.gerrit.pgm.http.jetty.HiddenErrorHandler : Error in GET /changes/2428/detail?O=404
java.lang.UnsupportedClassVersionError: org/gitective/core/BlobUtils : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at com.vmware.gerrit.owners.common.PathOwners.getOwners(PathOwners.java:149)
at com.vmware.gerrit.owners.common.PathOwners.fetchOwners(PathOwners.java:71)
at com.vmware.gerrit.owners.common.PathOwners.<init>(PathOwners.java:49)
at com.vmware.gerrit.owners.OwnersStoredValues$1.createValue(OwnersStoredValues.java:44)
at com.vmware.gerrit.owners.OwnersStoredValues$1.createValue(OwnersStoredValues.java:35)
at com.google.gerrit.rules.StoredValue.get(StoredValue.java:64)
at gerrit_owners.PRED_owner_path_1.exec(PRED_owner_path_1.java:38)
at com.googlecode.prolog_cafe.lang.PrologControl.executePredicate(PrologControl.java:154)
at com.googlecode.prolog_cafe.lang.BufferingPrologControl.run(BufferingPrologControl.java:147)
at com.googlecode.prolog_cafe.lang.BufferingPrologControl.all(BufferingPrologControl.java:121)
at com.google.gerrit.server.project.SubmitRuleEvaluator.evaluateImpl(SubmitRuleEvaluator.java:466)
at com.google.gerrit.server.project.SubmitRuleEvaluator.evaluate(SubmitRuleEvaluator.java:222)
at com.google.gerrit.server.change.ChangeJson.submitRecords(ChangeJson.java:437)
at com.google.gerrit.server.change.ChangeJson.initLabels(ChangeJson.java:494)
at com.google.gerrit.server.change.ChangeJson.labelsForOpenChange(ChangeJson.java:465)
at com.google.gerrit.server.change.ChangeJson.labelsFor(ChangeJson.java:455)
at com.google.gerrit.server.change.ChangeJson.toChangeInfo(ChangeJson.java:387)
at com.google.gerrit.server.change.ChangeJson.format(ChangeJson.java:238)
at com.google.gerrit.server.change.ChangeJson.format(ChangeJson.java:227)
at com.google.gerrit.server.change.ChangeJson.format(ChangeJson.java:206)
at com.google.gerrit.server.change.GetChange.apply(GetChange.java:46)
at com.google.gerrit.server.change.GetDetail.apply(GetDetail.java:50)
at com.google.gerrit.server.change.GetDetail.apply(GetDetail.java:26)
at com.google.gerrit.httpd.restapi.RestApiServlet.service(RestApiServlet.java:324)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:287)
at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:277)
at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:182)
at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
at com.google.gerrit.httpd.GetUserFilter.doFilter(GetUserFilter.java:82)
at com.google.gwtexpui.server.CacheControlFilter.doFilter(CacheControlFilter.java:73)
at com.google.gerrit.httpd.RunAsFilter.doFilter(RunAsFilter.java:117)
at com.google.gerrit.httpd.RequireSslFilter.doFilter(RequireSslFilter.java:68)
at com.google.gerrit.httpd.AllRequestFilter$FilterProxy$1.doFilter(AllRequestFilter.java:64)
at com.google.gerrit.httpd.AllRequestFilter$FilterProxy.doFilter(AllRequestFilter.java:57)
at com.google.gerrit.httpd.RequestContextFilter.doFilter(RequestContextFilter.java:75)
at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:119)
at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:133)
at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:130)
at com.google.inject.servlet.GuiceFilter$Context.call(GuiceFilter.java:203)
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:130)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:95)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:497)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.lang.Thread.run(Thread.java:745)

Thanks
Sharath

Luca Milanesio

unread,
Apr 12, 2017, 3:42:46 PM4/12/17
to Sharath Gupta, Repo and Gerrit Discussion
I guess you're using the wrong version of the owners plugin ;-)
Where did you downloaded it from?

Luca.

--
--
To unsubscribe, email repo-discuss...@googlegroups.com
More info at http://groups.google.com/group/repo-discuss?hl=en

---
You received this message because you are subscribed to the Google Groups "Repo and Gerrit Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to repo-discuss...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Sharath Gupta

unread,
Apr 12, 2017, 5:32:22 PM4/12/17
to Luca Milanesio, Repo and Gerrit Discussion
I am using the stable 2.11 version of Owners plugin. Gerrit running is 2.11.5

Thanks
Sharath

You received this message because you are subscribed to the Google Groups "Repo and Gerrit Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to repo-discuss+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.




--
-Sharath P S
Believe you can and you're halfway there.

Luca Milanesio

unread,
Apr 12, 2017, 5:40:02 PM4/12/17
to Sharath Gupta, Repo and Gerrit Discussion
mmm .... did you build it yourself? Or did you download it from somewhere? (e.g. gerrit-ci.gerritforge.com)

The "Unsupported major.minor version 52.0" means that it was built with Java 8.

Luca.

Sharath Gupta

unread,
Apr 12, 2017, 6:00:45 PM4/12/17
to Repo and Gerrit Discussion
I initially had java 1.8. I changed the version of java to 1.7 and then built owners plugin.

:~> java -version

java version "1.7.0_67"

Java(TM) SE Runtime Environment (build 1.7.0_67-b01)

Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

:~> javac -version

javac 1.7.0_67

Luca Milanesio

unread,
Apr 12, 2017, 6:02:43 PM4/12/17
to Sharath Gupta, Repo and Gerrit Discussion
You should have:
- Buck with Java7
- Java7
- a fresh clean build without using previous cache

... or if you want a plugin built without so much pain:

:-)

--
--
To unsubscribe, email repo-discuss...@googlegroups.com

More info at http://groups.google.com/group/repo-discuss?hl=en

---
You received this message because you are subscribed to the Google Groups "Repo and Gerrit Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to repo-discuss...@googlegroups.com.

Sharath Gupta

unread,
Apr 12, 2017, 6:18:38 PM4/12/17
to Repo and Gerrit Discussion, sharath...@gmail.com


On Wednesday, 12 April 2017 15:02:43 UTC-7, lucamilanesio wrote:
You should have:
- Buck with Java7
- Java7
- a fresh clean build without using previous cache

Thanks. Is the Plugin provided below compiled with Java 1.7? 

Luca Milanesio

unread,
Apr 12, 2017, 6:24:46 PM4/12/17
to Sharath Gupta, Repo and Gerrit Discussion
It should :-)

David Ostrovsky

unread,
Apr 13, 2017, 1:59:59 AM4/13/17
to Repo and Gerrit Discussion, sharath...@gmail.com
HI Luca,

I don't think it is related to the javac version used to compile the plugin.
Just looking inside 2.11 stable branch there, reveals, that: gitective:

'io.fabric8:gitective-core:0.9.10',

is used: [1], but looking inside this JAR reveals, that it was built with Java 8:

  $ javap -verbose -classpath gitective-core-0.9.10.jar org.gitective.core.BlobUtils | grep major
  major version: 52

And this is not comptible with Gerrit 2.11.

Another build issue that this plugin seems to have: it depends transitively on the
plugin API, so that it produced 24 MB final artifact. I've sent you a fix, untested: [2].


luca.mi...@gmail.com

unread,
Apr 13, 2017, 2:20:26 AM4/13/17
to David Ostrovsky, Repo and Gerrit Discussion, sharath...@gmail.com


On 13 Apr 2017, at 06:59, David Ostrovsky <david.o...@gmail.com> wrote:

HI Luca,

I don't think it is related to the javac version used to compile the plugin.
Just looking inside 2.11 stable branch there, reveals, that: gitective:

'io.fabric8:gitective-core:0.9.10',

is used: [1], but looking inside this JAR reveals, that it was built with Java 8:

  $ javap -verbose -classpath gitective-core-0.9.10.jar org.gitective.core.BlobUtils | grep major
  major version: 52

And this is not comptible with Gerrit 2.11.

How could the build be green then?
Are we then building it with Java 8 on the CI as well?


Another build issue that this plugin seems to have: it depends transitively on the
plugin API, so that it produced 24 MB final artifact. I've sent you a fix, untested: [2].

Yes, that is fixed on stable-2.13 and master.
However, it is not related to the Java 8 problem.

Sharath Gupta

unread,
Apr 18, 2017, 12:01:45 PM4/18/17
to Repo and Gerrit Discussion, david.o...@gmail.com, sharath...@gmail.com
Hi Luca

I tried building the Owners plugin on 2.11.5 with JAVA 1.7.0_67 with the patch you provided[1]. Looking at the JAR files, I see few classes listing Major version as 52.0 and few as 51.0

file gerrit_owners/PRED_add_owner_approval_2_1.class

gerrit_owners/PRED_add_owner_approval_2_1.class: compiled Java class data, version 51.0


file org/gitective/core/BlobUtils.class

org/gitective/core/BlobUtils.class: compiled Java class data, version 52.0

Reply all
Reply to author
Forward
0 new messages