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.
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 originalMain
class: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 theMain
class and it will work the same as runningIf you need to test with different file names, replace
new File("1.txt")
withargs[0]
and pass the file name in theMainWrapper
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
The
< 1.txt
syntax mean that the command processor ensures that standard input (System.in
in Java) provides the contents of the 1.txt file. The typical Java launcher do not support this.You can emulate this by manually rewire
System.in
to read from the file using your own Java snippet to do this.