{"record":{"id":"d278b087a913d608","repo":"oracle/graal","slug":"the-specjbb2015-environment-variable-was-not-speci","errorCode":null,"errorMessage":"The SPECJBB2015 environment variable was not specified.","messagePattern":"The SPECJBB2015 environment variable was not specified\\.","errorType":"validation","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"sdk/mx.sdk/mx_sdk_benchmark.py","lineNumber":3433,"sourceCode":"\n    def vmArgs(self, bmSuiteArgs):\n        vmArgs = self.vmArgshHeapFromEnv(super().vmArgs(bmSuiteArgs))\n        return _get_specjbb_vmArgs(mx.get_jdk().javaCompliance) + vmArgs\n\n    def specJbbClassPath(self):\n        specjbb2015 = mx.get_env(\"SPECJBB2015\")\n        if specjbb2015 is None:\n            mx.abort(\"Please set the SPECJBB2015 environment variable to a \" +\n                     \"SPECjbb2015 directory.\")\n        jbbpath = os.path.join(specjbb2015, \"specjbb2015.jar\")\n        if not os.path.exists(jbbpath):\n            mx.abort(\"The SPECJBB2015 environment variable points to a directory \" +\n                     \"without the specjbb2015.jar file.\")\n        return jbbpath\n\n    def validateEnvironment(self):\n        if not self.specJbbClassPath():\n            raise RuntimeError(\n                \"The SPECJBB2015 environment variable was not specified.\")\n\n    def validateReturnCode(self, retcode):\n        return retcode == 0\n\n    def workingDirectory(self, benchmarks, bmSuiteArgs):\n        return mx.get_env(\"SPECJBB2015\")\n\n    def createCommandLineArgs(self, benchmarks, bmSuiteArgs):\n        if benchmarks is not None:\n            mx.abort(\"No benchmark should be specified for the selected suite.\")\n        vmArgs = self.vmArgs(bmSuiteArgs)\n        if java_home_jdk().javaCompliance >= '9':\n            if java_home_jdk().javaCompliance < '11':\n                vmArgs += [\"--add-modules\", \"java.xml.bind\"]\n            else: # >= '11'\n                # JEP-320: Remove the Java EE and CORBA Modules in JDK11 http://openjdk.java.net/jeps/320\n                cp = []","sourceCodeStart":3415,"sourceCodeEnd":3451,"githubUrl":"https://github.com/oracle/graal/blob/a66e9ccd1d7bf2552883939aa0788dfd0e294aab/sdk/mx.sdk/mx_sdk_benchmark.py#L3415-L3451","documentation":"SPECjbb2015 suite validation failure. specJbbClassPath() derives the path from the SPECJBB2015 environment variable; when it is unset, validateEnvironment() raises this RuntimeError before any run. (A related mx.abort fires earlier when the variable is set but the jar is missing.)","triggerScenarios":"Running 'mx benchmark specjbb2015' without SPECJBB2015 exported; also note workingDirectory() returns that same env var, so it must be a valid directory for the run itself.","commonSituations":"SPECjbb2015 is license-restricted and often absent on CI; shells where the variable is set only in an interactive session and missing in cron/CI.","solutions":["Export SPECJBB2015 to a directory containing specjbb2015.jar: export SPECJBB2015=/path/to/specjbb2015.","Verify $SPECJBB2015/specjbb2015.jar exists, otherwise the run will abort with the 'points to a directory without the specjbb2015.jar file' error next.","Do not pass a benchmark name to this suite (it runs the whole SPECjbb2015 workload)."],"exampleFix":"# before\nmx benchmark specjbb2015   # SPECJBB2015 unset -> RuntimeError\n\n# after\nexport SPECJBB2015=/opt/benchmarks/specjbb2015\nmx benchmark specjbb2015","handlingStrategy":"validation","validationCode":"import os, pathlib\np = os.environ.get(\"SPECJBB2015\")\nassert p and (pathlib.Path(p) / \"specjbb2015.jar\").exists(), (\n    \"SPECJBB2015 must point to a directory containing specjbb2015.jar\")","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Set SPECJBB2015 in the CI environment definition, not interactively only.","Remember the same variable is used as the working directory, so it must stay a valid directory for the whole run."],"tags":["graalvm","benchmark","specjbb2015","environment","mx"],"backgroundTag":null,"analyzedSha":"a66e9ccd1d7bf2552883939aa0788dfd0e294aab","analyzedAt":"2026-08-14T13:58:47.161Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}