java-code-runner

0.3.39 • Public • Published

This is a module for runinng Java from String inside a node server built for another project called kodr

to run tests

npm install
npm test

The java server can run independently

I use Java 1.8

to run the server

Compile using 'ant'

Run server in bin

java -cp .:../lib/servlet-api-2.5.jar:../lib/jetty-all-7.0.2.v20100331.jar RunnerServlet

The default port is 3678

The server will return a statusCode 200 for GET request to '/'.

The server will return a JSON object {stout:String, sterr:String} for POST request to '/'.

The POST body should be {name:[nameOfClass], code:[classContent]} you can also post an optional input parameter for inpout stream and a timeLimit long for setting a timelimit on running the program

example in nodejs, you can build a similar request using postman

var post_data = querystring.stringify({
    'name': 'Main',
    'code': 'public class Main {public static void main (String [] args) { System.out.println("Hello World");}}',
    input:"input stream"
});
// An object of options to indicate where to post to
http.request({
    host: '127.0.0.1',
    port: 3678,
    path: '',
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length': post_data.length // don't need to fill this in postman
    }
}, function (res) {...});

post_req.write(post_data);
post_req.end();

java dependencies are in the .java-dependency file

This code is designed for UNIX system it may be incompatible with Windows, eg. I use the ':' to speerate classpath

node wraper

The module's index.js file exposes 6 methods

  • run
  • test
  • runClass
  • stopServer
  • runServer
  • recompile which prgramatically compiles only once per process

see tests for how they work.

Things left to do

Look into runing the java server as a docker container for security

Readme

Keywords

Package Sidebar

Install

npm i java-code-runner

Weekly Downloads

14

Version

0.3.39

License

MIT

Last publish

Collaborators

  • drazious