That is actually a sort of bad practice to distribute . within your java program, since it will stale after the browser will get updated. You also won’t be able to run the exe straight from the file. However if you have no options I can suggest the following way:

  1. Put your exe file to resources folder
  2. Within the code implement copying the file from resources to some place in the file system.
  3. Execute that file from the code
  4. Build jar (exe file will be placed as a resource to your jar)

Below is a simple example on how you can achieve points 2 and 3:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) throws InterruptedException, IOException {

        // Copy file from resources to file system (path taken from the command line argument)

        InputStream is = Main.class.getResourceAsStream("phantomjs.exe");
        File exeFile = new File(args[0]);
        FileOutputStream fos = new FileOutputStream(exeFile);
        byte bytes[] = new byte[1000];
        int k = 0;
        while((k = != -1){
            fos.write(bytes, 0, k);
        fos.close(); // Do not forget to close the outputstream, otherwise your code will be holding the file and it won't be possible to execute it

        // Below is just an example on how you can execute the file after copying
        List<String> commands = new ArrayList<String>();    //
        commands.(args[0]);                              //  Start file with argument
        commands.("--help");                             //
        Process p = new ProcessBuilder().command(commands).start();
        InputStream i = p.getInputStream();         //
        Scanner scanner = new Scanner(i);           //
        while (scanner.hasNextLine()){              //  Print the output of the file
            System.out.println(scanner.nextLine()); //
        }                                           //


In this example we have our phantomjs.exe file in resource folder. We also take the destination for the file copying from command line arguments. So the way how to execute the jar will look like:

java -jar mysuper.jar c:/Temp/pjs.exe

Source link


Please enter your comment!
Please enter your name here