You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2019/10/27 00:24:52 UTC
[calcite] 02/02: [CALCITE-3444] Upgrade SQLLine to 1.9.0,
and solve "Class path contains multiple SLF4J bindings" problem
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 <jh...@apache.org>
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 %*