I want to run a java class with args supplied as a file.
On shell, i can do
java SomeClass < 1.txt
Is there any equivalent for this on intellij and/or gradle.
I tried on IntelliJ IDEA -> edit configurations. But, the argument is not getting passed.
In the Project tool window ( Alt+1 ), right-click the node in which you want to create a new file and click New | File. Alternatively, select the node, press Alt+Insert , and click File. Name the new file and specify its extension, for example: File. js, and press Enter .
You can run a process with ⌃R (macOS), or Shift+F10 (Windows/Linux). To stop a process, you can use ⌘F2 on macOS, or Ctrl+F2 on Windows/Linux.
UPDATE:
This feature is now available for some Run/Debug configurations. At the moment supported types for Java-based run configurations are: Application, Java Scratch, JUnit, JarApplication.
Use the Redirect input from option:
Original answer from 2017 with the workaround:
IntelliJ IDEA doesn't support it at the moment:
You can adjust the code so that it accepts the file name as a parameter and opens it for reading. Or you can create a wrapper class that will redefine System.in
, then start your original Main
class:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class MainWrapper {
public static void main(String[] args) throws IOException {
FileInputStream is = new FileInputStream(new File("1.txt"));
System.setIn(is);
Main.main(args);
}
}
Make sure to either specify the full path to the file or to change the working directory in IntelliJ IDEA Run/Debug configuration to the location of 1.txt
.
Now you can run MainWrapper
class instead of the Main
class and it will work the same as running
java Main < 1.txt
If you need to test with different file names, replace new File("1.txt")
with args[0]
and pass the file name in the MainWrapper
Run/Debug configuration Program arguments field.
You can actually do that now, starting from version 2018.3:
- Select "Run/Debug configurations"
- Set path to input file at "Redirect input from" field
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With