2

Basically, I want to do two things:

  1. I want to know if there is any way that I can run Java code using Java code.
  2. If it is possible, how would I show the output on my screen? (be it regular output or error or exception)

I know this is possible because one of my seniors had done it, but I don't know how he did it. Maybe he used one of Java's built-in classes.

Note: user will write the code in some text file and then I will store that file content in some variable and then maybe run that code.

4 Answers 4

5

Yes, it is possible.

Step 1: Compile the Code
Use ProcessBuilder or Runtime to construct a Process in which the Java compiler compiles their code. (Note that this requires that a Java compiler be available on the system at runtime).

Step 2: Invoke their Code
There are two ways to invoke their code. You can again use a ProcessBuilder or Runtime object to construct a process in which you execute their Java code. You can use the Process's getInputStream and getOutputStream functions to read from and write to the other process. An alternative is that you can use Class and the various reflection APIs to load their code and execute it directly within Java.

Sign up to request clarification or add additional context in comments.

1 Comment

The Java compiler is frequently found in the JDK or brought along as the standalone Eclipse compiler.
1

You would have to some how invoke a compiler (such as Suns javac), parse its output in case of errors and load the resulting classes dynamically.

There is no API-classes in the Java runtime library that will parse, compile and run Java source code.

2 Comments

senior who has done that, has done using some java's core inbuilt classes. may be he had done as you say but i want to know how?
Either he built his own java parser / compiler or he used an of-the-shelf compiler backend such as suns javac, or eclipse jdt.
0

If you want an interpreter (so, no compiling required) for Java, take a look at BeanShell.
I like this one very much!

1 Comment

BeanShell is not under active development for several years now, so I wouldn't recommend it.
0

You can use a scripting language running on top of the JVM. Groovy is a very good idea and it has very similar syntax compared to Java.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.