We have too little information to be sure about anything, but the
typical cause here is that your servlet runs in an environment that
already has SLF4J loaded, but your code directly or indirectly load
SFL4J on its own.
If that is indeed the cause:
You need to find out which of your dependencies pulls in SLF4J
(jcifs.smb is likely the culprit because loggers aren't typically
created in module A and passed on to module B, though that could
happen), and tell your build system that the dependency should be
ignored in your build.
E.g. with Maven, you'd use dependency:tree to see the dependencies, use
<exclusions> on the direct dependency to get rid of the unwanted
dependence, and add slf4j as a direct dependency with a "provided" scope
(this should make your IDE include the module during debugging if it
knows Maven, and make Maven include the module in the classpath during
compilation but not when building the .war file).
If it's another cause, you'll need to give us more information :-)
Regards,
Jo
Am 09.10.20 um 23:19 schrieb larry.stam...@daimler.com:
I am using an API which uses slf4j (it happens to be jcifs-ng, but I
don’t think that matters.) When I am able to define my classpath myself,
I can call this API with no problem – slf4j finds no bindings and falls
back on NOP. But when I call the API running under a service whose
classpath I can’t control, I get this error:
java.lang.LinkageError: loader constraint violation: when resolving
method
"org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;"
the class loader (instance of
chs/api/mgr/local/ExtraJarPluginClassLoader) of the current class,
org/slf4j/LoggerFactory, and the class loader (instance of <bootloader>)
for the method's defining class, org/slf4j/impl/StaticLoggerBinder, have
different Class objects for the type org/slf4j/ILoggerFactory used in
the signature
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:418)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383)
at
jcifs.smb.NtlmPasswordAuthenticator.<clinit>(NtlmPasswordAuthenticator.java:58)
I don’t use sl4j directly. Is there some way I can bind to NOP before I
make any calls to the API?
Larry Stamper
MP9-OCS
DISYS (Digital Intelligence Systems)
Consulting Software Engineer
Cell: (503) 560-7004
larry.stam...@daimler.com <mailto:larry.stam...@daimler.com>
Default Disclaimer Daimler AG
If you are not the addressee, please inform us immediately that you have
received this e-mail by mistake, and delete it. We thank you for your
support.
_______________________________________________
slf4j-user mailing list
slf4j-user@qos.ch
http://mailman.qos.ch/mailman/listinfo/slf4j-user
_______________________________________________
slf4j-user mailing list
slf4j-user@qos.ch
http://mailman.qos.ch/mailman/listinfo/slf4j-user