Благодаря предложению Пуля я нашел следующее решение:
Когда .jar запускается без аргументов, он автоматически ищет файл .bat "launcher.bat" в той же папке изапускает этот файл через процесс CMD:
if(args.length > 0 && args[0].equals("ATTACH") {
// Execute command-line program....
} else {
ArrayList<String> commands = new ArrayList<>();
commands.add("cmd.exe");
commands.add("/c");
commands.add("start");
commands.add("cd " + new File("").getAbsolutePath()); // cd to classpath
commands.add("launcher.bat"); // The launcher that is in classpath
ProcessBuilder pb = new ProcessBuilder(commands);
Process p = pb.start();
}
.bat-файл содержит следующую инструкцию:
java -jar LineCounter.jar ATTACH
В результате окно cmd, открытое с помощью компоновщика процессов, будетПоверните снова, откройте файл bat, который откроет файл .jar и останется прикрепленным к нему.