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.
Was this helpful?