I am new to using the ProcessBuilder object to run commands inside of Java. My issue is that when I put my environment variables into the builder.command(...) method, it doesn't work. However, when I hardcode the strings of the environment variables, it works perfectly. Here is my code below along with an explanation to help make clear on what I am doing:
ProcessBuilder builder = new ProcessBuilder();
    builder.directory(f);
    System.out.println("The user's chosen directory is: "+builder.directory());
    Map<String, String> environment = builder.environment();
    environment.put("WINDOW",w);
    environment.put("AUDIO",a);
    environment.forEach((key,value)->System.out.println("key is "+key+" "+"value: "+value));
    builder.command("ffmpeg", "-i", "$WINDOW","-i", "$AUDIO", "-vcodec", "copy" ,"output.mp4");
    Process pr= builder.start();
Explanation/Objective:
Basically I have a
JButtonin which anActionListeneris being fired off when the user clicks it. I am trying to useffmpegto convert an audio and video file together into one file if they desire. This code above will be executed in which I am trying to get the directory of the file they chose in my application to store the two files mentioned previously. Through usingbuilder.directory(f), I am able to change the current directory ofbuilderto that of the user's. I then created a map calledenvironmentin which I could add two environment variables calledWINDOWandAUDIO. The two env. variables were assigned file names such that the file names were assigned to two variableswandawhich are of type string. I did check to see if they were in the map and they were. I then attempt to make my set of instructions using thebuilder.command(...)method and then start the process usingbuilder.start().
Conclusion:
However, the single
output.mp4file was not created and when I checked my Process using thewaitFor()method I get a "1". On the contrary, when I don't use env. variables at all and hardcode the file names in between the parantheses where the env. variables were, it works correctly. So, exactly what am I doing wrong in mybuilder.command(..)? Thanks.