This is an automated email from the ASF dual-hosted git repository. jhyde pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/calcite.git
commit 293059c190d5347438f5bc77a4f844f86ce60226 Author: Julian Hyde <[email protected]> AuthorDate: Thu Oct 24 11:28:43 2019 -0700 [CALCITE-3444] Upgrade SQLLine to 1.9.0, and solve "Class path contains multiple SLF4J bindings" problem Calcite's sqlline script generates target/fullclasspath.txt with two jar files that contain slf4j bindings. The solution is to remove slf4j-log4j12 from the generated classpath. This does not solve the problem on Windows, because sqlline.bat builds its classpath in a different way. --- pom.xml | 2 +- sqlline | 5 +++-- sqlline.bat | 9 +++++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 198ece2..93f6751 100644 --- a/pom.xml +++ b/pom.xml @@ -140,7 +140,7 @@ limitations under the License. <sketches.version>0.9.0</sketches.version> <slf4j.version>1.7.25</slf4j.version> <spark.version>2.2.0</spark.version> - <sqlline.version>1.8.0</sqlline.version> + <sqlline.version>1.9.0</sqlline.version> <tpcds.version>1.2</tpcds.version> <xalan.version>2.7.1</xalan.version> <xerces.version>2.9.1</xerces.version> diff --git a/sqlline b/sqlline index 0dc6a76..980e95a 100755 --- a/sqlline +++ b/sqlline @@ -28,10 +28,11 @@ esac # Build classpath on first call. # (To force rebuild, remove target/fullclasspath.txt.) +# Remove slf4j-log4j, otherwise slf4j complains about multiple bindings. cd $(dirname $0) if [ ! -f target/fullclasspath.txt ]; then - mvn dependency:build-classpath -Dmdep.outputFile=target/classpath.txt - awk -v RS=: -v ORS=: '{if (!m[$0]) {m[$0]=1; print}}' \ + ./mvnw dependency:build-classpath -Dmdep.outputFile=target/classpath.txt + awk -v RS=: -v ORS=: '{if (!m[$0] && $0 !~ /slf4j-log4j12/) {m[$0]=1; print}}' \ target/classpath.txt \ */target/classpath.txt > target/fullclasspath.txt fi diff --git a/sqlline.bat b/sqlline.bat index d338981..5aa2935 100644 --- a/sqlline.bat +++ b/sqlline.bat @@ -20,8 +20,13 @@ :: > sqlline.bat :: sqlline> !connect jdbc:calcite: admin admin -:: Copy dependency jars on first call. (To force jar refresh, remove target\dependencies) -if not exist target\dependencies (call mvn -B dependency:copy-dependencies -DoverWriteReleases=false -DoverWriteSnapshots=false -DoverWriteIfNewer=true -DoutputDirectory=target\dependencies) +:: Copy dependency jars on first call. +:: (To force jar refresh, remove core\target\dependencies) +:: We remove slf4j-log4j, otherwise slf4j complains about multiple bindings. +if not exist core\target\dependencies ( + call .\mvnw -B dependency:copy-dependencies -DoverWriteReleases=false -DoverWriteSnapshots=false -DoverWriteIfNewer=true -DoutputDirectory=target\dependencies + del /q /s slf4j-log4j12-*.jar +) java -Xmx1G -cp ".\target\dependencies\*;core\target\dependencies\*;cassandra\target\dependencies\*;druid\target\dependencies\*;elasticsearch\target\dependencies\*;geode\target\dependencies\*;file\target\dependencies\*;mongodb\target\dependencies\*;server\target\dependencies\*;spark\target\dependencies\*;splunk\target\dependencies\*" sqlline.SqlLine --verbose=true %*
