I have a main method that creates an instance of a logic class
public static void main(String[] args) {
try {
Logic logic = new Logic(args[0]);
....... do some stuff here
} catch (Exception e) {
System.out.println("Error Encountered Details: " + e);
}
}
the thing is that the programme requires a csv file to run, i have put it in the same directory as the .jar file but when i run from the command line i just get java.lang.arrayindexoutofbounds(0) error
what am i doing wrong
thanks
Your command line should look like:
It looks like you're not supplying the .csv file name (which will go in
args[0]
) ?The above assumes that the main class is not defined in your .jar manifest. if it is, then use:
It's a good practise to check the
args[]
array for the required info, btw, and generate a message such as "Missing .csv file name" or similar to avoid a nasty exception/stack trace.You need to pass an argument to your program.
new Logic(argv[0])
indicates that the program expects at least one command line argument, like so:You need to call your application with a command line something like:
. You got that error message because you weren't supplying the file name.
args[0] will not contain anything unless you put it on the command line and you'll get an index out of bounds error. Your command should look like this...
args[0] will then contain c:\myfile.csv and you don't need to worry about its location.
You're not checking if the args have any items. Always check if args has contents before you try to access it. . . Others have answered how to pass the params in...
You need to invoke your program as something like
or, if the application isn't JAR-packaged,
The reason why you're getting the ArrayIndexOutOfBoundsException, is because the
args
array passed into the main method is of size zero (so doesn't have a first element). This happens if you don't pass any parameters to the program.Incidentally you should typically guard against this by checking the number of arguments passed in and printing a more coherent error message, such as: