Skip to content

Commit d347f1d

Browse files
Merge pull request #3 from RumbleDB/JavaWarning
Add warning and bump up version.
2 parents 52a3432 + 721a269 commit d347f1d

2 files changed

Lines changed: 38 additions & 1 deletion

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "jsoniq"
7-
version = "0.1.0a9"
7+
version = "0.1.0a10"
88
description = "Python edition of RumbleDB, a JSONiq engine"
99
requires-python = ">=3.11"
1010
dependencies = [

src/jsoniq/session.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
from pyspark.sql import SparkSession
22
from .sequence import SequenceOfItems
3+
import sys
4+
import platform
5+
import os
6+
import re
37
import importlib.resources as pkg_resources
48

59
with pkg_resources.path("jsoniq.jars", "rumbledb-1.24.0.jar") as jar_path:
@@ -19,6 +23,39 @@ def __init__(self, spark_session: SparkSession):
1923

2024
class Builder:
2125
def __init__(self):
26+
27+
java_version = os.popen("java -version 2>&1").read()
28+
if "version" in java_version:
29+
match = re.search(r'version "(\d+\.\d+)', java_version)
30+
if match:
31+
version = match.group(1)
32+
if not (version.startswith("17.") or version.startswith("21.")):
33+
sys.stderr.write("**************************************************************************\n")
34+
sys.stderr.write("[Error] RumbleDB builds on top of pyspark 4, which requires Java 17 or 21.\n")
35+
sys.stderr.write(f"Your Java version: {version}\n")
36+
sys.stderr.write("**************************************************************************\n")
37+
sys.stderr.write("\n")
38+
sys.stderr.write("What should you do?\n")
39+
sys.stderr.write("\n")
40+
sys.stderr.write("If you do NOT have Java 17 or 21 installed, you can download Java 17 or 21 for example from https://adoptium.net/\n")
41+
sys.stderr.write("\n")
42+
sys.stderr.write("Quick command for macOS: brew install --cask temurin17 or brew install --cask temurin21\n")
43+
sys.stderr.write("Quick command for Ubuntu: apt-get install temurin-17-jdk or apt-get install temurin-21-jdk\n")
44+
sys.stderr.write("Quick command for Windows 11: winget install EclipseAdoptium.Temurin.17.JDK or. winget install EclipseAdoptium.Temurin.21.JDK\n")
45+
sys.stderr.write("\n")
46+
sys.stderr.write(
47+
"If you DO have Java 17 or 21, but the wrong version appears above, then it means you need to set your JAVA_HOME environment variable properly to point to Java 17 or 21.\n"
48+
)
49+
sys.stderr.write("\n")
50+
sys.stderr.write("For macOS, try: export JAVA_HOME=$(/usr/libexec/java_home -v 17) or export JAVA_HOME=$(/usr/libexec/java_home -v 21)\n");
51+
sys.stderr.write("\n")
52+
sys.stderr.write("For Ubuntu, find the paths to installed versions with this command: update-alternatives --config java\n then: export JAVA_HOME=...your desired path...\n")
53+
sys.stderr.write("\n")
54+
sys.stderr.write("For Windows 11: look for the default Java path with 'which java' and/or look for alternate installed versions in Program Files. Then: setx /m JAVA_HOME \"...your desired path here...\"\n")
55+
sys.exit(43)
56+
else:
57+
sys.stderr.write("[Error] Could not determine Java version. Please ensure Java is installed and JAVA_HOME is properly set.\n")
58+
sys.exit(43)
2259
self._sparkbuilder = SparkSession.builder.config("spark.jars", jar_path_str)
2360

2461
def getOrCreate(self):

0 commit comments

Comments
 (0)