[ 
https://issues.apache.org/jira/browse/TINKERPOP-3014?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Cole Greer reassigned TINKERPOP-3014:
-------------------------------------

    Assignee: Cole Greer

> Dependencny jcl-over-slf4j in gremlin-core is declared but unused due to 
> dependency conflict.
> ---------------------------------------------------------------------------------------------
>
>                 Key: TINKERPOP-3014
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-3014
>             Project: TinkerPop
>          Issue Type: Bug
>            Reporter: Weijie Sun
>            Assignee: Cole Greer
>            Priority: Major
>              Labels: dependency
>   Original Estimate: 0h
>  Remaining Estimate: 0h
>
> h2. Problem Description
> "gremlin-core" declares "jcl-over-slf4j" as its dependency. However, it seems 
> that the dependency is actually unused due to a dependency conflict.
> There is another dependency "commons-logging:commons-logging" in the 
> dependency tree as listed below:
> {code:java}
> org.apache.tinkerpop:gremlin-core:jar:3.7.0-SNAPSHOT
> \- org.apache.commons:commons-configuration2:jar:2.9.0:compile
>    \- commons-logging:commons-logging:jar:1.2:compile
> \- org.slf4j:jcl-over-slf4j:jar:1.7.33:compile{code}
> The classes in "jcl-over-slf4j" are also in "commons-logging" as listed below:
> {code:java}
> [INFO] org.apache.commons.logging.impl.NoOpLog
> [INFO] org.apache.commons.logging.impl.SimpleLog$1
> [INFO] org.apache.commons.logging.impl.SimpleLog
> [INFO] org.apache.commons.logging.impl.SLF4JLocationAwareLog
> [INFO] org.apache.commons.logging.impl.SLF4JLog
> [INFO] org.apache.commons.logging.impl.SLF4JLogFactory
> [INFO] org.apache.commons.logging.Log
> [INFO] org.apache.commons.logging.LogConfigurationException
> [INFO] org.apache.commons.logging.LogFactory{code}
> The problem is that "commons-logging" is ahead of "jcl-over-slf4j" in the 
> dependency tree, thus ahead of "jcl-over-slf4j" in the classpath. When 
> multiple JAR files contain the same class, the class loader will load the 
> first occurrence it finds based on the classpath order. This means the 
> classloader will select classes in "commons-logging" instead of 
> "jcl-over-slf4j".
> So despite "jcl-over-slf4j" being declared directly, it's actually unused. 
> "commons-logging" is the actual used dependency, causing confusion.
> h2. Possible Solution
> Change the order of "jcl-over-slf4j" and "commons-logging" so that 
> "jcl-over-slf4j" appears ahead of "commons-logging" in the classpath. In this 
> way, "jcl-over-slf4j" is used as intended.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to