Выполнение wmv файла, упакованного в jar

1

Я хочу выполнить видеофайл wmv, присутствующий в PicturePackage. Я использую следующий код:

try {
        File f;
        f = new File(getClass().getResource("/PicturePackage/admin_input.wmv").toURI());
        Desktop.getDesktop().open(f);
    } catch (URISyntaxException | IOException ex) {
        Logger.getLogger(Help.class.getName()).log(Level.SEVERE, null, ex);
    }

Этот код запускается и воспроизводит видео, когда я бегу в netbeans. Но когда я выполняю его через jar файл, созданный netbeans, он не запускает видеофайл. Любая конкретная проблема, о которой я не забочусь???

РЕДАКТИРОВАТЬ:

Я попробовал это

File tempFile = null;
try (InputStream in =
    getClass().getResourceAsStream("/PicturePackage/admin_input.wmv")) {
Path temp = Files.createTempFile("temp", ".wmv");
Files.copy(in, temp);
tempFile = temp.toFile();
// This will try to delete the file when you close your java app
tempFile.deleteOnExit(); 
} catch (Exception e) {
// Handle the exceptions properly
}

// Here you can use tempFile to open it
if (tempFile != null) {
try {
    Desktop.getDesktop().open(tempFile);
} catch (IOException e) {
    // Handle exception
}
}

И это стек, который я получаю

java.nio.file.FileAlreadyExistsException: C:\Users\Ashu\AppData\Local\Temp\temp1136027223125637051.wmv at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:81) at sun.nio.fs.WindowsException. rethrowAsIOException (WindowsException.java:97) на sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) на sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:230) на java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:430) в файле java.nio.file.Files.newOutputStream(Files.java:170) в файле java.nio.file.Files.copy(Files.java:2841) в gatetestadmin.Help. jButton1ActionPerformed (Help.java:148) в gatetestadmin.Help.access $ 000 (Help.java:23) в gatetestadmin.Help $ 1.actionPerformed(Help.java:63) в javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018 ) в javax.swing.AbstractButton $ Handler.actionPerformed(AbstractButton.java:2341) в javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButto) nModel.java:402) в javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) в javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) в java.awt.Component.processMouseEvent (компонент.java: 6505) в javax.swing.JComponent.processMouseEvent(JComponent.java:3320) в java.awt.Component.processEvent(Component.java:6270) в java.awt.Container.processEvent(Container.java:2229) в java.awt.Component.dispatchEventImpl(Component.java:4861) в java.awt.Container.dispatchEventImpl(Container.java:2287) в java.awt.Component.dispatchEvent(Component.java:4687) в java.awt. LightweightDispatcher.retargetMouseEvent(Container.java:4832) в java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) в java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) в java.awt.Container.dispatchEventImpl (Контейнер.java: 2273) в java.awt.Window.dispatchEventImpl(Window.java:2719) в java.awt.Component.dispatchEvent(Component.java:4687) в java.awt. EventQueue.dispatchEventImpl(EventQueue.java:735) в java.awt.EventQueue.access $ 200 (EventQueue.java:103) в java.awt.EventQueue $ 3.run(EventQueue.java:694) в java.awt.EventQueue $ 3. run (EventQueue.java:692) в java.security.AccessController.doPrivileged (собственный метод) в java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:76) в java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java: 87) в java.awt.EventQueue $ 4.run(EventQueue.java:708) в java.awt.EventQueue $ 4.run(EventQueue.java:706) в java.security.AccessController.doPrivileged (собственный метод) в java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:76) в java.awt.EventQueue.dispatchEvent(EventQueue.java:705) в java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) в java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) в java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) в java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) в java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) в java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

  • 0
    Просто для того, чтобы спросить, действительно ли ваше видео упаковано в файл JAR?
  • 0
    да, я проверил это через 7zip. Видеофайл присутствует в jar-файле
Теги:
netbeans

1 ответ

0
Лучший ответ

Когда вы запускаете его из Netbeans, ваш файл wmv существует как отдельный независимый файл. Это может воспроизводить внешний видеоплеер.

Когда вы упаковываете приложение в банку и запускаете его как банку, wmv будет упакован в банку, а созданный файл f будет ссылаться на эту запись в банке. Эта запись jar будет недоступна/интерпретируется внешнему видеопроигрывателю.

Вам нужно извлечь wmv, сохранить его как временный файл и открыть его. Или не включайте видеофайл в банку, поместите его рядом с банкой.

Здесь вы можете извлечь видео во временный файл:

File tempFile = null;
try (InputStream in =
        getClass().getResourceAsStream("/PicturePackage/admin_input.wmv")) {
    Path temp = Files.createTempFile("temp", ".wmv");
    Files.copy(in, temp, StandardCopyOption.REPLACE_EXISTING);
    tempFile = temp.toFile();
    // This will try to delete the file when you close your java app
    tempFile.deleteOnExit(); 
} catch (Exception e) {
    // Handle the exceptions properly
}

// Here you can use tempFile to open it
if (tempFile != null) {
    try {
        Desktop.getDesktop().open(tempFile);
    } catch (IOException e) {
        // Handle exception
    }
}
  • 0
    Есть ли другой способ запустить файл в jar. Если нет, то как мы можем «извлечь» из банки ??? Спасибо за ваше внимание
  • 0
    Внешние видеоплееры обычно не поддерживают воспроизведение видеофайла, упакованного в zip-файл или jar-файл, поэтому я не буду рассчитывать на это. Проще всего не упаковать видео в банку, просто поместите его рядом с файлом баночки.
Показать ещё 11 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню