Hi, > Why do you use 1.7.29 ?
Because our company has a Sentry server supports this version of clients. > Do you specify this class name in logging.properties ? Is this class in 1.7.29 ? Yes and yes. If I add sentry jars to classpath, sentry works well. Exceptions are sent to the server and visible in web interface. > You just need to add it as a normal Maven dependency. Maven dependency is needed only If I would like to use Sentry in code. But I don't. > If you need to really put it on the bootstrap. When I say bootstrap I mean Tomcat bootstrap: https://tomcat.apache.org/tomcat-8.0-doc/class-loader-howto.html Which is standard java classpath, I see. BTW if I add jars to java bootclasspath, I got the same error. Just a very interesting test: if I add an empty JAR (no class files in it) file to setenv.sh (no Sentry jars at all) that I got the same error. It seems that adding an empty jar to classpath case this classloading problem :( Regards, Tamas On Wed, Nov 11, 2020 at 12:33 PM Martin Grigorov <mgrigo...@apache.org> wrote: > Hi, > > On Wed, Nov 11, 2020 at 11:20 AM Tamás Barta <bartata...@gmail.com> wrote: > > > Hi, > > > > The ways you wrote is not usable, because they cause the following > problem: > > > > Handler error > > java.lang.ClassNotFoundException: io.sentry.jul.SentryHandler > > at java.net.URLClassLoader.findClass(URLClassLoader.java:381) > > at java.lang.ClassLoader.loadClass(ClassLoader.java:424) > > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338) > > at java.lang.ClassLoader.loadClass(ClassLoader.java:357) > > at > > > > > org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:582) > > at > > > > > org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:524) > > at > > > > > org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:322) > > at java.util.logging.LogManager$3.run(LogManager.java:399) > > at java.util.logging.LogManager$3.run(LogManager.java:396) > > at java.security.AccessController.doPrivileged(Native Method) > > at > > > > > java.util.logging.LogManager.readPrimordialConfiguration(LogManager.java:396) > > at java.util.logging.LogManager.access$800(LogManager.java:145) > > at java.util.logging.LogManager$2.run(LogManager.java:345) > > at java.security.AccessController.doPrivileged(Native Method) > > at > > > > > java.util.logging.LogManager.ensureLogManagerInitialized(LogManager.java:338) > > at > java.util.logging.LogManager.getLogManager(LogManager.java:378) > > at java.util.logging.Logger.demandLogger(Logger.java:448) > > at java.util.logging.Logger.getLogger(Logger.java:502) > > at > > org.apache.juli.logging.DirectJDKLog.<init>(DirectJDKLog.java:67) > > at > > org.apache.juli.logging.DirectJDKLog.getInstance(DirectJDKLog.java:187) > > at > > org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:117) > > at > > org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:141) > > at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:196) > > at > > org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:52) > > 10-Nov-2020 17:44:11.137 INFO [main] > > org.apache.catalina.startup.VersionLoggerListener.log Server version: > > Apache Tomcat/8.5.23 > > 10-Nov-2020 17:44:11.139 INFO [main] > > org.apache.catalina.startup.VersionLoggerListener.log Server built: > > Sep 28 2017 10:30:11 UTC > > ... > > > > The Sentry log handler must be in Boostrap jars, it must be loaded before > > web application and before jars in $CATALINA_BASE/lib. If I am right, the > > best way to do that is by setting it in setenv.sh. > > > > I haven't used Sentry before so I just looked it up. > https://docs.sentry.io/platforms/java/usage/ says that the current version > is 3.1.1. Why do you use 1.7.29 ? There is no io.sentry.jul.SentryHandler > class in 3.1.1. Do you specify this class name in logging.properties ? Is > this class in 1.7.29 ? > There is nothing about "bootstrap" on > https://docs.sentry.io/platforms/java/usage/ or at > https://docs.sentry.io/platforms/java/guides/spring-boot/. You just need > to > add it as a normal Maven dependency. > If you need to really put it on the bootstrap path then you need to use > -Xbootclasspath:... > By using CLASSPATH=$CLASSPATH:... you actually *append* jars to the > classpath, while you sound like you need to *prepend* to it. > > > > > > I can't imagine how could it be possible without setting sentry jar the > web > > application works well, there is no problem, but if I add > sentry-1.7.29.jar > > to classpath then ServletContainerInitializer won't be found by Catalina. > > This class is only in $CATALINA_BASE/lib/servlet-api.jar. > > > > Thanks, Tamás > > > > On Wed, Nov 11, 2020 at 9:46 AM Martin Grigorov <mgrigo...@apache.org> > > wrote: > > > > > Hi, > > > > > > On Wed, Nov 11, 2020 at 10:36 AM Tamás Barta <bartata...@gmail.com> > > wrote: > > > > > > > Hi, > > > > > > > > Now it is a Spring Boot web application project without embedded > > tomcat. > > > > There is no library in war with javax.servlet api classes. There > error > > is > > > > the same: > > > > > > > > 11-Nov-2020 09:34:06.719 SEVERE [localhost-startStop-1] > > > > org.apache.catalina.core.ContainerBase.addChildInternal > > > > ContainerBase.addChild: start: > > > > org.apache.catalina.LifecycleException: Failed to start component > > > > > > > > > > > > > > [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ReplicationService-0.0.1-SNAPSHOT]] > > > > at > org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) > > > > at > > > > > > > > > > > > > > org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752) > > > > at > > > org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728) > > > > at > > org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) > > > > at > > org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:988) > > > > at > > > > > > > > > > org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1860) > > > > at > > > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > > > > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > > > > at > > > > > > > > > > > > > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > > > > at > > > > > > > > > > > > > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > > > > at java.lang.Thread.run(Thread.java:748) > > > > Caused by: java.lang.NoClassDefFoundError: > > > > javax/servlet/ServletContainerInitializer > > > > at java.lang.ClassLoader.defineClass1(Native Method) > > > > at java.lang.ClassLoader.defineClass(ClassLoader.java:763) > > > > at > > > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) > > > > at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) > > > > at java.net.URLClassLoader.access$100(URLClassLoader.java:73) > > > > at java.net.URLClassLoader$1.run(URLClassLoader.java:368) > > > > at java.net.URLClassLoader$1.run(URLClassLoader.java:362) > > > > at java.security.AccessController.doPrivileged(Native Method) > > > > at java.net.URLClassLoader.findClass(URLClassLoader.java:361) > > > > at java.lang.ClassLoader.loadClass(ClassLoader.java:424) > > > > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338) > > > > at java.lang.ClassLoader.loadClass(ClassLoader.java:411) > > > > at java.lang.ClassLoader.loadClass(ClassLoader.java:357) > > > > at java.lang.Class.forName0(Native Method) > > > > at java.lang.Class.forName(Class.java:348) > > > > at > > > > > > > > > > > > > > org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1277) > > > > at > > > > > > > > > > > > > > org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119) > > > > at java.lang.Class.forName0(Native Method) > > > > at java.lang.Class.forName(Class.java:348) > > > > at > > > > > > > > > > > > > > org.apache.catalina.startup.WebappServiceLoader.loadServices(WebappServiceLoader.java:188) > > > > at > > > > > > > > > > > > > > org.apache.catalina.startup.WebappServiceLoader.load(WebappServiceLoader.java:159) > > > > at > > > > > > > > > > > > > > org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1622) > > > > at > > > > > > > > > > > > > > org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1135) > > > > at > > > > > > > > > > > > > > org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:775) > > > > at > > > > > > > > > > > > > > org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299) > > > > at > > > > > > > > > > > > > > org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94) > > > > at > > > > > > > > > > > > > > org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5105) > > > > at > org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) > > > > ... 10 more > > > > Caused by: java.lang.ClassNotFoundException: > > > > javax.servlet.ServletContainerInitializer > > > > > > > > > > Definitely you mess up the classpath and there are none or more than > one > > > servlet-api.jar in the classpath. > > > > > > What happens if you put your sentry related jars in the .war file > > > (/WEB-INF/lib/) ? I.e. add them as proper Maven dependencies > > > Or if you put them in $CATALINA_BASE/lib ? > > > Why did you go with editing setenv.sh in first place ? > > > > > > > > > > at java.net.URLClassLoader.findClass(URLClassLoader.java:381) > > > > at java.lang.ClassLoader.loadClass(ClassLoader.java:424) > > > > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338) > > > > at java.lang.ClassLoader.loadClass(ClassLoader.java:357) > > > > ... 38 more > > > > > > > > On Tue, Nov 10, 2020 at 11:28 PM Christopher Schultz < > > > > ch...@christopherschultz.net> wrote: > > > > > > > > > Tamás, > > > > > > > > > > On 11/10/20 15:42, Tamás Barta wrote: > > > > > > This is the content of setenv.sh: > > > > > > > > > > > > CLASSPATH=$CLASSPATH:$CATALINA_BASE/sentry/sentry-1.7.29.jar > > > > > > CLASSPATH=$CLASSPATH:$CATALINA_BASE/sentry/slf4j-api-1.7.24.jar > > > > > > > CLASSPATH=$CLASSPATH:$CATALINA_BASE/sentry/jackson-core-2.8.10.jar > > > > > > > > > > > > The web application without this sentry configuration works well > > for > > > > > ages. > > > > > > But if I add the above configuration, it won't. > > > > > > > > > > > > Yes, it is a maven project, now I checked and I see that there > are > > > > Tomcat > > > > > > jar-s in it: > > > > > > > > > > > > tomcat-annotations-api-8.5.23.jar tomcat-embed-core-8.5.23.jar > > > > > > tomcat-embed-el-8.5.23.jar tomcat-embed-websocket-8.5.23.jar > > > > > > tomcat-jdbc-8.5.23.jar tomcat-juli-8.5.23.jar > > > > > > > > > > > > Maybe the problem is that Spring Boot application contains embed > > > Tomcat > > > > > > jars? This is very interesting that this extra Sentry jar in > > > classpath > > > > > > cause this problem. > > > > > > > > > > Wait... you are using Spring Boot and you are also using setenv.sh? > > > > > > > > > > I'm very confused. > > > > > > > > > > I wouldn't expect Sentry and its dependencies to cause a problem. > > > > > > > > > > -chris > > > > > > > > > > > --------------------------------------------------------------------- > > > > > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > > > > > For additional commands, e-mail: users-h...@tomcat.apache.org > > > > > > > > > > > > > > > > > > > >