From 69e04bdf63fab4d75c43d7bf40dbe38aeeda84f5 Mon Sep 17 00:00:00 2001 From: Andy Li <1450947+andy1li@users.noreply.github.com> Date: Mon, 4 Nov 2024 09:04:27 +0800 Subject: [PATCH] Add Java support --- .../java/.codecrafters/compile.sh | 11 ++++ compiled_starters/java/.codecrafters/run.sh | 11 ++++ compiled_starters/java/.gitattributes | 1 + compiled_starters/java/.gitignore | 3 ++ compiled_starters/java/README.md | 50 ++++++++++++++++++ compiled_starters/java/codecrafters.yml | 11 ++++ compiled_starters/java/pom.xml | 52 +++++++++++++++++++ .../java/src/main/java/Main.java | 39 ++++++++++++++ compiled_starters/java/your_program.sh | 24 +++++++++ course-definition.yml | 2 + dockerfiles/java-23.Dockerfile | 13 +++++ .../java/01-ry8/code/.codecrafters/compile.sh | 11 ++++ .../java/01-ry8/code/.codecrafters/run.sh | 11 ++++ solutions/java/01-ry8/code/.gitattributes | 1 + solutions/java/01-ry8/code/.gitignore | 3 ++ solutions/java/01-ry8/code/README.md | 50 ++++++++++++++++++ solutions/java/01-ry8/code/codecrafters.yml | 11 ++++ solutions/java/01-ry8/code/pom.xml | 52 +++++++++++++++++++ .../java/01-ry8/code/src/main/java/Main.java | 34 ++++++++++++ solutions/java/01-ry8/code/your_program.sh | 24 +++++++++ .../01-ry8/diff/src/main/java/Main.java.diff | 45 ++++++++++++++++ solutions/java/01-ry8/explanation.md | 21 ++++++++ .../java/code/.codecrafters/compile.sh | 11 ++++ .../java/code/.codecrafters/run.sh | 11 ++++ starter_templates/java/code/.gitignore | 3 ++ starter_templates/java/code/pom.xml | 52 +++++++++++++++++++ .../java/code/src/main/java/Main.java | 39 ++++++++++++++ starter_templates/java/config.yml | 3 ++ 28 files changed, 599 insertions(+) create mode 100755 compiled_starters/java/.codecrafters/compile.sh create mode 100755 compiled_starters/java/.codecrafters/run.sh create mode 100644 compiled_starters/java/.gitattributes create mode 100644 compiled_starters/java/.gitignore create mode 100644 compiled_starters/java/README.md create mode 100644 compiled_starters/java/codecrafters.yml create mode 100644 compiled_starters/java/pom.xml create mode 100644 compiled_starters/java/src/main/java/Main.java create mode 100755 compiled_starters/java/your_program.sh create mode 100644 dockerfiles/java-23.Dockerfile create mode 100755 solutions/java/01-ry8/code/.codecrafters/compile.sh create mode 100755 solutions/java/01-ry8/code/.codecrafters/run.sh create mode 100644 solutions/java/01-ry8/code/.gitattributes create mode 100644 solutions/java/01-ry8/code/.gitignore create mode 100644 solutions/java/01-ry8/code/README.md create mode 100644 solutions/java/01-ry8/code/codecrafters.yml create mode 100644 solutions/java/01-ry8/code/pom.xml create mode 100644 solutions/java/01-ry8/code/src/main/java/Main.java create mode 100755 solutions/java/01-ry8/code/your_program.sh create mode 100644 solutions/java/01-ry8/diff/src/main/java/Main.java.diff create mode 100644 solutions/java/01-ry8/explanation.md create mode 100755 starter_templates/java/code/.codecrafters/compile.sh create mode 100755 starter_templates/java/code/.codecrafters/run.sh create mode 100644 starter_templates/java/code/.gitignore create mode 100644 starter_templates/java/code/pom.xml create mode 100644 starter_templates/java/code/src/main/java/Main.java create mode 100644 starter_templates/java/config.yml diff --git a/compiled_starters/java/.codecrafters/compile.sh b/compiled_starters/java/.codecrafters/compile.sh new file mode 100755 index 0000000..8d278c3 --- /dev/null +++ b/compiled_starters/java/.codecrafters/compile.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# +# This script is used to compile your program on CodeCrafters +# +# This runs before .codecrafters/run.sh +# +# Learn more: https://codecrafters.io/program-interface + +set -e # Exit on failure + +mvn -B package -Ddir=/tmp/codecrafters-build-interpreter-java diff --git a/compiled_starters/java/.codecrafters/run.sh b/compiled_starters/java/.codecrafters/run.sh new file mode 100755 index 0000000..2742ee7 --- /dev/null +++ b/compiled_starters/java/.codecrafters/run.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# +# This script is used to run your program on CodeCrafters +# +# This runs after .codecrafters/compile.sh +# +# Learn more: https://codecrafters.io/program-interface + +set -e # Exit on failure + +exec java -jar /tmp/codecrafters-build-interpreter-java/codecrafters-interpreter.jar "$@" diff --git a/compiled_starters/java/.gitattributes b/compiled_starters/java/.gitattributes new file mode 100644 index 0000000..176a458 --- /dev/null +++ b/compiled_starters/java/.gitattributes @@ -0,0 +1 @@ +* text=auto diff --git a/compiled_starters/java/.gitignore b/compiled_starters/java/.gitignore new file mode 100644 index 0000000..a48b18a --- /dev/null +++ b/compiled_starters/java/.gitignore @@ -0,0 +1,3 @@ +*.jar +target/ +.idea/ diff --git a/compiled_starters/java/README.md b/compiled_starters/java/README.md new file mode 100644 index 0000000..37e7aa9 --- /dev/null +++ b/compiled_starters/java/README.md @@ -0,0 +1,50 @@ +![progress-banner](https://codecrafters.io/landing/images/default_progress_banners/interpreter.png) + +This is a starting point for Java solutions to the +["Build your own Interpreter" Challenge](https://app.codecrafters.io/courses/interpreter/overview). + +This challenge follows the book +[Crafting Interpreters](https://craftinginterpreters.com/) by Robert Nystrom. + +In this challenge you'll build an interpreter for +[Lox](https://craftinginterpreters.com/the-lox-language.html), a simple +scripting language. Along the way, you'll learn about tokenization, ASTs, +tree-walk interpreters and more. + +Before starting this challenge, make sure you've read the "Welcome" part of the +book that contains these chapters: + +- [Introduction](https://craftinginterpreters.com/introduction.html) (chapter 1) +- [A Map of the Territory](https://craftinginterpreters.com/a-map-of-the-territory.html) + (chapter 2) +- [The Lox Language](https://craftinginterpreters.com/the-lox-language.html) + (chapter 3) + +These chapters don't involve writing code, so they won't be covered in this +challenge. This challenge will start from chapter 4, +[Scanning](https://craftinginterpreters.com/scanning.html). + +**Note**: If you're viewing this repo on GitHub, head over to +[codecrafters.io](https://codecrafters.io) to try the challenge. + +# Passing the first stage + +The entry point for your program is in `src/main/java/Main.java`. Study and +uncomment the relevant code, and push your changes to pass the first stage: + +```sh +git commit -am "pass 1st stage" # any msg +git push origin master +``` + +Time to move on to the next stage! + +# Stage 2 & beyond + +Note: This section is for stages 2 and beyond. + +1. Ensure you have `mvn` installed locally +2. Run `./your_program.sh` to run your program, which is implemented in + `src/main/java/Main.java`. +3. Commit your changes and run `git push origin master` to submit your solution + to CodeCrafters. Test output will be streamed to your terminal. diff --git a/compiled_starters/java/codecrafters.yml b/compiled_starters/java/codecrafters.yml new file mode 100644 index 0000000..2406954 --- /dev/null +++ b/compiled_starters/java/codecrafters.yml @@ -0,0 +1,11 @@ +# Set this to true if you want debug logs. +# +# These can be VERY verbose, so we suggest turning them off +# unless you really need them. +debug: false + +# Use this to change the Java version used to run your code +# on Codecrafters. +# +# Available versions: java-23 +language_pack: java-23 diff --git a/compiled_starters/java/pom.xml b/compiled_starters/java/pom.xml new file mode 100644 index 0000000..3df943b --- /dev/null +++ b/compiled_starters/java/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + + io.codecrafters + codecrafters-interpreter + 1.0 + + + 23 + 23 + UTF-8 + 23 + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + codecrafters-interpreter + + jar-with-dependencies + + false + + + true + + Main + + + ${dir} + + + + + make-assembly + package + + single + + + + + + + + \ No newline at end of file diff --git a/compiled_starters/java/src/main/java/Main.java b/compiled_starters/java/src/main/java/Main.java new file mode 100644 index 0000000..5de5794 --- /dev/null +++ b/compiled_starters/java/src/main/java/Main.java @@ -0,0 +1,39 @@ +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +public class Main { + public static void main(String[] args) { + // You can use print statements as follows for debugging, they'll be visible when running tests. + System.err.println("Logs from your program will appear here!"); + + if (args.length < 2) { + System.err.println("Usage: ./your_program.sh tokenize "); + System.exit(1); + } + + String command = args[0]; + String filename = args[1]; + + if (!command.equals("tokenize")) { + System.err.println("Unknown command: " + command); + System.exit(1); + } + + String fileContents = ""; + try { + fileContents = Files.readString(Path.of(filename)); + } catch (IOException e) { + System.err.println("Error reading file: " + e.getMessage()); + System.exit(1); + } + + // Uncomment this block to pass the first stage + // + // if (fileContents.length() > 0) { + // throw new RuntimeException("Scanner not implemented"); + // } else { + // System.out.println("EOF null"); // Placeholder, remove this line when implementing the scanner + // } + } +} diff --git a/compiled_starters/java/your_program.sh b/compiled_starters/java/your_program.sh new file mode 100755 index 0000000..84ad0ca --- /dev/null +++ b/compiled_starters/java/your_program.sh @@ -0,0 +1,24 @@ +#!/bin/sh +# +# Use this script to run your program LOCALLY. +# +# Note: Changing this script WILL NOT affect how CodeCrafters runs your program. +# +# Learn more: https://codecrafters.io/program-interface + +set -e # Exit early if any commands fail + +# Copied from .codecrafters/compile.sh +# +# - Edit this to change how your program compiles locally +# - Edit .codecrafters/compile.sh to change how your program compiles remotely +( + cd "$(dirname "$0")" # Ensure compile steps are run within the repository directory + mvn -B package -Ddir=/tmp/codecrafters-build-interpreter-java +) + +# Copied from .codecrafters/run.sh +# +# - Edit this to change how your program runs locally +# - Edit .codecrafters/run.sh to change how your program runs remotely +exec java -jar /tmp/codecrafters-build-interpreter-java/codecrafters-interpreter.jar "$@" diff --git a/course-definition.yml b/course-definition.yml index 572f5f0..496899b 100644 --- a/course-definition.yml +++ b/course-definition.yml @@ -27,6 +27,8 @@ languages: - slug: "c" - slug: "gleam" - slug: "go" + - slug: "java" + release_status: "alpha" - slug: "kotlin" - slug: "ocaml" - slug: "python" diff --git a/dockerfiles/java-23.Dockerfile b/dockerfiles/java-23.Dockerfile new file mode 100644 index 0000000..6199494 --- /dev/null +++ b/dockerfiles/java-23.Dockerfile @@ -0,0 +1,13 @@ +# syntax=docker/dockerfile:1.7-labs +FROM maven:3.9.9-eclipse-temurin-23-alpine + +# Ensures the container is re-built if dependency files change +ENV CODECRAFTERS_DEPENDENCY_FILE_PATHS="pom.xml" + +WORKDIR /app + +# .git & README.md are unique per-repository. We ignore them on first copy to prevent cache misses +COPY --exclude=.git --exclude=README.md . /app + +# Install language-specific dependencies +RUN .codecrafters/compile.sh diff --git a/solutions/java/01-ry8/code/.codecrafters/compile.sh b/solutions/java/01-ry8/code/.codecrafters/compile.sh new file mode 100755 index 0000000..8d278c3 --- /dev/null +++ b/solutions/java/01-ry8/code/.codecrafters/compile.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# +# This script is used to compile your program on CodeCrafters +# +# This runs before .codecrafters/run.sh +# +# Learn more: https://codecrafters.io/program-interface + +set -e # Exit on failure + +mvn -B package -Ddir=/tmp/codecrafters-build-interpreter-java diff --git a/solutions/java/01-ry8/code/.codecrafters/run.sh b/solutions/java/01-ry8/code/.codecrafters/run.sh new file mode 100755 index 0000000..2742ee7 --- /dev/null +++ b/solutions/java/01-ry8/code/.codecrafters/run.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# +# This script is used to run your program on CodeCrafters +# +# This runs after .codecrafters/compile.sh +# +# Learn more: https://codecrafters.io/program-interface + +set -e # Exit on failure + +exec java -jar /tmp/codecrafters-build-interpreter-java/codecrafters-interpreter.jar "$@" diff --git a/solutions/java/01-ry8/code/.gitattributes b/solutions/java/01-ry8/code/.gitattributes new file mode 100644 index 0000000..176a458 --- /dev/null +++ b/solutions/java/01-ry8/code/.gitattributes @@ -0,0 +1 @@ +* text=auto diff --git a/solutions/java/01-ry8/code/.gitignore b/solutions/java/01-ry8/code/.gitignore new file mode 100644 index 0000000..a48b18a --- /dev/null +++ b/solutions/java/01-ry8/code/.gitignore @@ -0,0 +1,3 @@ +*.jar +target/ +.idea/ diff --git a/solutions/java/01-ry8/code/README.md b/solutions/java/01-ry8/code/README.md new file mode 100644 index 0000000..37e7aa9 --- /dev/null +++ b/solutions/java/01-ry8/code/README.md @@ -0,0 +1,50 @@ +![progress-banner](https://codecrafters.io/landing/images/default_progress_banners/interpreter.png) + +This is a starting point for Java solutions to the +["Build your own Interpreter" Challenge](https://app.codecrafters.io/courses/interpreter/overview). + +This challenge follows the book +[Crafting Interpreters](https://craftinginterpreters.com/) by Robert Nystrom. + +In this challenge you'll build an interpreter for +[Lox](https://craftinginterpreters.com/the-lox-language.html), a simple +scripting language. Along the way, you'll learn about tokenization, ASTs, +tree-walk interpreters and more. + +Before starting this challenge, make sure you've read the "Welcome" part of the +book that contains these chapters: + +- [Introduction](https://craftinginterpreters.com/introduction.html) (chapter 1) +- [A Map of the Territory](https://craftinginterpreters.com/a-map-of-the-territory.html) + (chapter 2) +- [The Lox Language](https://craftinginterpreters.com/the-lox-language.html) + (chapter 3) + +These chapters don't involve writing code, so they won't be covered in this +challenge. This challenge will start from chapter 4, +[Scanning](https://craftinginterpreters.com/scanning.html). + +**Note**: If you're viewing this repo on GitHub, head over to +[codecrafters.io](https://codecrafters.io) to try the challenge. + +# Passing the first stage + +The entry point for your program is in `src/main/java/Main.java`. Study and +uncomment the relevant code, and push your changes to pass the first stage: + +```sh +git commit -am "pass 1st stage" # any msg +git push origin master +``` + +Time to move on to the next stage! + +# Stage 2 & beyond + +Note: This section is for stages 2 and beyond. + +1. Ensure you have `mvn` installed locally +2. Run `./your_program.sh` to run your program, which is implemented in + `src/main/java/Main.java`. +3. Commit your changes and run `git push origin master` to submit your solution + to CodeCrafters. Test output will be streamed to your terminal. diff --git a/solutions/java/01-ry8/code/codecrafters.yml b/solutions/java/01-ry8/code/codecrafters.yml new file mode 100644 index 0000000..2406954 --- /dev/null +++ b/solutions/java/01-ry8/code/codecrafters.yml @@ -0,0 +1,11 @@ +# Set this to true if you want debug logs. +# +# These can be VERY verbose, so we suggest turning them off +# unless you really need them. +debug: false + +# Use this to change the Java version used to run your code +# on Codecrafters. +# +# Available versions: java-23 +language_pack: java-23 diff --git a/solutions/java/01-ry8/code/pom.xml b/solutions/java/01-ry8/code/pom.xml new file mode 100644 index 0000000..3df943b --- /dev/null +++ b/solutions/java/01-ry8/code/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + + io.codecrafters + codecrafters-interpreter + 1.0 + + + 23 + 23 + UTF-8 + 23 + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + codecrafters-interpreter + + jar-with-dependencies + + false + + + true + + Main + + + ${dir} + + + + + make-assembly + package + + single + + + + + + + + \ No newline at end of file diff --git a/solutions/java/01-ry8/code/src/main/java/Main.java b/solutions/java/01-ry8/code/src/main/java/Main.java new file mode 100644 index 0000000..e02875a --- /dev/null +++ b/solutions/java/01-ry8/code/src/main/java/Main.java @@ -0,0 +1,34 @@ +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +public class Main { + public static void main(String[] args) { + if (args.length < 2) { + System.err.println("Usage: ./your_program.sh tokenize "); + System.exit(1); + } + + String command = args[0]; + String filename = args[1]; + + if (!command.equals("tokenize")) { + System.err.println("Unknown command: " + command); + System.exit(1); + } + + String fileContents = ""; + try { + fileContents = Files.readString(Path.of(filename)); + } catch (IOException e) { + System.err.println("Error reading file: " + e.getMessage()); + System.exit(1); + } + + if (fileContents.length() > 0) { + throw new RuntimeException("Scanner not implemented"); + } else { + System.out.println("EOF null"); // Placeholder, remove this line when implementing the scanner + } + } +} diff --git a/solutions/java/01-ry8/code/your_program.sh b/solutions/java/01-ry8/code/your_program.sh new file mode 100755 index 0000000..84ad0ca --- /dev/null +++ b/solutions/java/01-ry8/code/your_program.sh @@ -0,0 +1,24 @@ +#!/bin/sh +# +# Use this script to run your program LOCALLY. +# +# Note: Changing this script WILL NOT affect how CodeCrafters runs your program. +# +# Learn more: https://codecrafters.io/program-interface + +set -e # Exit early if any commands fail + +# Copied from .codecrafters/compile.sh +# +# - Edit this to change how your program compiles locally +# - Edit .codecrafters/compile.sh to change how your program compiles remotely +( + cd "$(dirname "$0")" # Ensure compile steps are run within the repository directory + mvn -B package -Ddir=/tmp/codecrafters-build-interpreter-java +) + +# Copied from .codecrafters/run.sh +# +# - Edit this to change how your program runs locally +# - Edit .codecrafters/run.sh to change how your program runs remotely +exec java -jar /tmp/codecrafters-build-interpreter-java/codecrafters-interpreter.jar "$@" diff --git a/solutions/java/01-ry8/diff/src/main/java/Main.java.diff b/solutions/java/01-ry8/diff/src/main/java/Main.java.diff new file mode 100644 index 0000000..a92349b --- /dev/null +++ b/solutions/java/01-ry8/diff/src/main/java/Main.java.diff @@ -0,0 +1,45 @@ +@@ -1,39 +1,34 @@ + import java.io.IOException; + import java.nio.file.Files; + import java.nio.file.Path; + + public class Main { + public static void main(String[] args) { +- // You can use print statements as follows for debugging, they'll be visible when running tests. +- System.err.println("Logs from your program will appear here!"); +- + if (args.length < 2) { + System.err.println("Usage: ./your_program.sh tokenize "); + System.exit(1); + } + + String command = args[0]; + String filename = args[1]; + + if (!command.equals("tokenize")) { + System.err.println("Unknown command: " + command); + System.exit(1); + } + + String fileContents = ""; + try { + fileContents = Files.readString(Path.of(filename)); + } catch (IOException e) { + System.err.println("Error reading file: " + e.getMessage()); + System.exit(1); + } + +- // Uncomment this block to pass the first stage +- // +- // if (fileContents.length() > 0) { +- // throw new RuntimeException("Scanner not implemented"); +- // } else { +- // System.out.println("EOF null"); // Placeholder, remove this line when implementing the scanner +- // } ++ if (fileContents.length() > 0) { ++ throw new RuntimeException("Scanner not implemented"); ++ } else { ++ System.out.println("EOF null"); // Placeholder, remove this line when implementing the scanner ++ } + } + } diff --git a/solutions/java/01-ry8/explanation.md b/solutions/java/01-ry8/explanation.md new file mode 100644 index 0000000..87bf11d --- /dev/null +++ b/solutions/java/01-ry8/explanation.md @@ -0,0 +1,21 @@ +The entry point for your Interpreter implementation is in `src/main/java/Main.java`. + +Study and uncomment the relevant code: + +```java +// Uncomment this block to pass the first stage + +if (fileContents.length() > 0) { + throw new RuntimeException("Scanner not implemented"); +} else { + System.out.println("EOF null"); // Placeholder, remove this line when implementing the scanner +} +``` + +Push your changes to pass the first stage: + +``` +git add . +git commit -m "pass 1st stage" # any msg +git push origin master +``` diff --git a/starter_templates/java/code/.codecrafters/compile.sh b/starter_templates/java/code/.codecrafters/compile.sh new file mode 100755 index 0000000..8d278c3 --- /dev/null +++ b/starter_templates/java/code/.codecrafters/compile.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# +# This script is used to compile your program on CodeCrafters +# +# This runs before .codecrafters/run.sh +# +# Learn more: https://codecrafters.io/program-interface + +set -e # Exit on failure + +mvn -B package -Ddir=/tmp/codecrafters-build-interpreter-java diff --git a/starter_templates/java/code/.codecrafters/run.sh b/starter_templates/java/code/.codecrafters/run.sh new file mode 100755 index 0000000..2742ee7 --- /dev/null +++ b/starter_templates/java/code/.codecrafters/run.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# +# This script is used to run your program on CodeCrafters +# +# This runs after .codecrafters/compile.sh +# +# Learn more: https://codecrafters.io/program-interface + +set -e # Exit on failure + +exec java -jar /tmp/codecrafters-build-interpreter-java/codecrafters-interpreter.jar "$@" diff --git a/starter_templates/java/code/.gitignore b/starter_templates/java/code/.gitignore new file mode 100644 index 0000000..a48b18a --- /dev/null +++ b/starter_templates/java/code/.gitignore @@ -0,0 +1,3 @@ +*.jar +target/ +.idea/ diff --git a/starter_templates/java/code/pom.xml b/starter_templates/java/code/pom.xml new file mode 100644 index 0000000..3df943b --- /dev/null +++ b/starter_templates/java/code/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + + io.codecrafters + codecrafters-interpreter + 1.0 + + + 23 + 23 + UTF-8 + 23 + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + codecrafters-interpreter + + jar-with-dependencies + + false + + + true + + Main + + + ${dir} + + + + + make-assembly + package + + single + + + + + + + + \ No newline at end of file diff --git a/starter_templates/java/code/src/main/java/Main.java b/starter_templates/java/code/src/main/java/Main.java new file mode 100644 index 0000000..5de5794 --- /dev/null +++ b/starter_templates/java/code/src/main/java/Main.java @@ -0,0 +1,39 @@ +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +public class Main { + public static void main(String[] args) { + // You can use print statements as follows for debugging, they'll be visible when running tests. + System.err.println("Logs from your program will appear here!"); + + if (args.length < 2) { + System.err.println("Usage: ./your_program.sh tokenize "); + System.exit(1); + } + + String command = args[0]; + String filename = args[1]; + + if (!command.equals("tokenize")) { + System.err.println("Unknown command: " + command); + System.exit(1); + } + + String fileContents = ""; + try { + fileContents = Files.readString(Path.of(filename)); + } catch (IOException e) { + System.err.println("Error reading file: " + e.getMessage()); + System.exit(1); + } + + // Uncomment this block to pass the first stage + // + // if (fileContents.length() > 0) { + // throw new RuntimeException("Scanner not implemented"); + // } else { + // System.out.println("EOF null"); // Placeholder, remove this line when implementing the scanner + // } + } +} diff --git a/starter_templates/java/config.yml b/starter_templates/java/config.yml new file mode 100644 index 0000000..c35aa0d --- /dev/null +++ b/starter_templates/java/config.yml @@ -0,0 +1,3 @@ +attributes: + required_executable: mvn + user_editable_file: src/main/java/Main.java