Java приложение воспроизводит только выбранные видео на моем компьютере, но не на другом - PullRequest
0 голосов
/ 27 мая 2020

Недавно я разработал программное обеспечение (предназначенное для настольных приложений) с помощью инструментов Swing Netbeans. Проблема, с которой я столкнулся, заключается в том, что мое приложение работает должным образом только на моем P C. При нажатии определенной кнопки воспроизводится соответствующее видео (с использованием vl c).

Однако, когда я распространяю приложение (используя launch4j для преобразования из .jar в .exe) на другие ПК, видео порция не играет. Я знаю, что это потому, что я указал, где находится видео в моем P C. Но я хочу научиться делать это по-другому - заставить играть на других ПК. Ниже приведен код, который я сейчас использую для воспроизведения определенных c видео (без использования JChooser). Я также пробовал использовать пути к файлам, чтобы иметь возможность найти абсолютные пути к соответствующим файлам. Однако проблема нажатия - это сгенерированный одиночный обратный слеш sh вместо двойного слэша. Это мешает мне использовать самостоятельно созданные пути к файлам. Могу ли я отсортировать буквы и добавить дополнительный sla sh каждый раз, когда появляется каждый отдельный fla sh. Затем объедините это и сгенерируйте пути к файлам? Что по вашему мнению можно сделать?

Код раздела:

    try{
ProcessBuilder pbh = new ProcessBuilder("C:\\Program Files (x86)\\VLC\\vlc.exe", "C:\\Users\\INJESUSNAME\\Documents\\NetBeansProjects\\GESVI_1_1\\dist\\JECE\\GVI National Anthem.mp3");

    pbh.start();
}

    catch(IOException e){
    e.printStackTrace();
    }

//Second attempt
    import java.lang.ProcessBuilder;

     //Get VLC's absolute path
    File check_vlc = new File("vlc.exe");
    String absolute_vlc_path = 
    check_vlc.getAbsolutePath();
    System.out.println("absolute_vlc_path" 
    +absolute_vlc_path);

    //Get user_mp3's absolute path
    File check_user_mp3 = new 
    File("User_Anthem__2_.mp3");
    String absolute_ check_user_mp3 _path = 
    check_user_mp3.getAbsolutePath();
    System.out.println("absolute_ check_user_mp3 
    _path " + absolute_ check_user_mp3 _path);
    ProcessBuilder pbh;
    pbh = new ProcessBuilder(absolute_ 
    check_user_mp3 _path, absolute_vlc_path);
    pbh.start();

1 Ответ

0 голосов
/ 27 мая 2020

Вы должны запускать вашу программу с аргументами командной строки.

Например java -jar VLCPlayer.jar path_to_your_vl c .exe start_path_to_your_mp3

Этот код повторяет начальную папку повторно и добавляет файлы в массив. Вы можете перечислить этот массив в пользовательском интерфейсе.

public class VLCPlayer {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length>=2) {
            String vlcplayer = args[0];
            String mediafolder = args[1];
            ArrayList<File> files = getPaths(new File(mediafolder),
                new ArrayList<File>());
            if(files == null) return;
            try {
               for (int i = 0; i < files.size(); i++)
                  System.out.println(files.get(i).getCanonicalPath());
            } catch (IOException e) {
               e.printStackTrace();
            }      
        }
    }

    private static ArrayList<File> getPaths(File file, ArrayList<File> list) {
        if (file == null || list == null || !file.isDirectory())
            return null;
        File[] fileArr = file.listFiles();
        for (File f : fileArr) {
            if (f.isDirectory()) {
                getPaths(f, list);
            }
            // check, if it is vlc playable file (e.g. mp3)
            list.add(f);
        }
        return list;
    } 

}
...