Upgrading Fisheye fails because signer information does not match signer information of other classes in the same package

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

When starting up the newly installed Fisheye version (for performing an upgrade), the startup fails and the following error is written in the atlassian-fisheye.log :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 2021-08-09 12:20:05,881 ERROR [main ] fisheye FishEyeWebApplicationContext-doStart - The Web context could not be started java.lang.SecurityException: class "org.apache.jasper.runtime.TldScanner"'s signer information does not match signer information of other classes in the same package at java.lang.ClassLoader.checkCerts(ClassLoader.java:898) [?:1.8.0_102] at java.lang.ClassLoader.preDefineClass(ClassLoader.java:668) [?:1.8.0_102] at java.lang.ClassLoader.defineClass(ClassLoader.java:761) [?:1.8.0_102] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) [?:1.8.0_102] at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) [?:1.8.0_102] at java.net.URLClassLoader.access$100(URLClassLoader.java:73) [?:1.8.0_102] at java.net.URLClassLoader$1.run(URLClassLoader.java:368) [?:1.8.0_102] at java.net.URLClassLoader$1.run(URLClassLoader.java:362) [?:1.8.0_102] at java.security.AccessController.doPrivileged(Native Method) [?:1.8.0_102] at java.net.URLClassLoader.findClass(URLClassLoader.java:361) [?:1.8.0_102] at java.lang.ClassLoader.loadClass(ClassLoader.java:424) [?:1.8.0_102] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) [?:1.8.0_102] at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:538) [jetty-webapp-9.4.38.v20210224.jar:9.4.38.v20210224] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) [?:1.8.0_102] at java.lang.Class.forName0(Native Method) [?:1.8.0_102] at java.lang.Class.forName(Class.java:348) [?:1.8.0_102] at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:370) [?:1.8.0_102] at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) [?:1.8.0_102] at java.util.ServiceLoader$1.next(ServiceLoader.java:480) [?:1.8.0_102] at org.eclipse.jetty.annotations.AnnotationConfiguration.getNonExcludedInitializers(AnnotationConfiguration.java:829) [jetty-annotations-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:343) [jetty-annotations-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:498) [jetty-webapp-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1409) [jetty-webapp-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:911) [jetty-server-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288) [jetty-servlet-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524) [jetty-webapp-9.4.38.v20210224.jar:9.4.38.v20210224] at com.cenqua.fisheye.web.jetty.FishEyeWebApplicationContext.doStart(FishEyeWebApplicationContext.java:26) [fisheye.jar:?] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) [jetty-util-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) [jetty-util-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117) [jetty-util-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) [jetty-server-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) [jetty-util-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) [jetty-util-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117) [jetty-util-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) [jetty-server-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) [jetty-util-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) [jetty-util-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110) [jetty-util-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) [jetty-server-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.server.handler.gzip.GzipHandler.doStart(GzipHandler.java:426) [jetty-server-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) [jetty-util-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) [jetty-util-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.server.Server.start(Server.java:423) [jetty-server-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110) [jetty-util-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) [jetty-server-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.server.Server.doStart(Server.java:387) [jetty-server-9.4.38.v20210224.jar:9.4.38.v20210224] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) [jetty-util-9.4.38.v20210224.jar:9.4.38.v20210224] at com.cenqua.fisheye.web.WebServer.start(WebServer.java:327) [fisheye.jar:?] at com.cenqua.fisheye.ctl.Run.mainImpl(Run.java:236) [fisheye.jar:?] at com.cenqua.fisheye.ctl.Run.main(Run.java:55) [fisheye.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [?:1.8.0_102] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [?:1.8.0_102] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [?:1.8.0_102] at java.lang.reflect.Method.invoke(Method.java:498) [?:1.8.0_102] at com.cenqua.fisheye.FishEyeCtl.mainImpl(FishEyeCtl.java:101) [fisheyeboot.jar:?] at com.cenqua.fisheye.FishEyeCtl.main(FishEyeCtl.java:44) [fisheyeboot.jar:?]

Environment

Versions: This problem has been noticed when upgrading Fisheye from version 4.5.3 to 4.8.7

Operating System: Windows, with Fisheye starting as Windows Service

Diagnosis

Consider these values as examples:

  • Original Fisheye installation directory: C:\Atlassian\fecru-4.5.3

  • Original Fisheye data directory: C:\ApplicationData

  • New Fisheye installation directory: C:\Atlassian\fecru-4.8.7

  • New Fisheye data directory: C:\Atlassian\fecru-4.5.3

A few log lines before the error above may indicate that the config.xml  file was copied from the new installation directory to the previous installation directory, which is wrong because as this is an upgrade it should have used the existing file from the data directory:

1 2 3 2021-08-09 12:20:03,223 INFO [main ] fisheye Run-mainImpl - Configuration file not found: C:\Atlassian\fecru-4.5.3\config.xml. Creating default configuration. 2021-08-09 12:20:03,245 INFO [main ] fisheye Run-mainImpl - Successfully copied config file from C:\Atlassian\fecru-4.8.7\config.xml to C:\Atlassian\fecru-4.5.3\config.xml 2021-08-09 12:20:03,246 INFO [main ] fisheye RootConfig-load - loading config from file: C:\Atlassian\fecru-4.5.3\config.xml

This indicates that when the new version installer was executed, the Data Directory selected was in fact the installation directory used by the old version, instead of the data directory.

Note: In this specific case the old installation directory happened to not have the default config.xml inside, that is why it was copied from the new installation directory.

Cause

This configuration misconception / misconfiguration when running the installer (mentioned in the Diagnosis) is making Fisheye try to load the same Java classes belonging to the same packages from the same JAR files located in two different places (from both the old and the new lib directories found inside each installation directory), and those JAR files have signatures signed with different certificates. 

Solution

Uninstall the new version and re-run the new version installer making sure to select the Data Directory instead of the old version installation directory when asked to select a Data Directory.

Updated on March 11, 2025

Still need help?

The Atlassian Community is here for you.