### What is this PR for? - ToolProvider.getSystemJavaCompiler() can return null in JRE environments. - Added a fail-fast null check in StaticRepl to throw a clear exception early. - Updated unit test to reflect this behavior. ### What type of PR is it? Bug Fix ### Todos * [ ] - Task ### What is the Jira issue? * [ZEPPELIN-6306](https://issues.apache.org/jira/browse/ZEPPELIN-6306) ### How should this be tested? * Run the existing unit test `testJDKCompilerAvailability()` to ensure the compiler is available in JDK. * Run all Zeppelin unit tests to confirm no regressions. ### Screenshots (if appropriate) ### Questions: * Does the license files need to update? no * Is there breaking changes for older versions? no * Does this needs documentation? no Closes #5069 from eunhwa99/ZEPPELIN-6306. Signed-off-by: ParkGyeongTae <gyeongtae@apache.org> |
||
|---|---|---|
| .. | ||
| src | ||
| pom.xml | ||
| README.md | ||
Overview
Java interpreter for Apache Zeppelin
Architecture
Current interpreter implementation supports the static REPL. It compiles the code in memory, execute it and redirect the output to Zeppelin.
Technical overview
-
Upon starting an interpreter, an instance of
JavaCompileris created. -
When the user runs commands with java, the
JavaParsergo through the code to get a class that contains the main method. -
Then it replaces the class name with random class name to avoid overriding while compilation. It creates new out & err stream to get the data in new stream instead of the console, to redirect output to Zeppelin.
-
If there is any error during compilation, it can catch and redirect to Zeppelin.
-
JavaInterpreterUtilscontains useful methods to print out Java collections and leverage Zeppelin's built in visualization.