Хочу воспроизвести wav из jar (но пока написать, код и чтобы он хотя бы воспроизвел в idea).
InputStream in = this.getClass().getResourceAsStream("parser_uploaded.wav");
try {
AudioInputStream ain= AudioSystem.getAudioInputStream(in); // ругается на эту строку
} catch (UnsupportedAudioFileException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Пробовал разные пути :
lib/src/main/resources/parser_uploaded.wav
src/main/resources/parser_uploaded.wav
resources/parser_uploaded.wav
Пробовал и так писать.
InputStream in = this.getClass().getClassLoader().getResourceAsStream("main/resources/parser_uploaded.wav");
Exception in thread "JNativeHook Dispatch Thread" java.lang.NullPointerException
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(SoftMidiAudioFileReader.java:134)
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1113)
at com.example.Main.PlaySound(Main.java:417)
at com.example.Main.nativeKeyPressed(Main.java:344)
at org.jnativehook.GlobalScreen$EventDispatchTask.processKeyEvent(GlobalScreen.java:561)
at org.jnativehook.GlobalScreen$EventDispatchTask.run(GlobalScreen.java:521)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Класс, из которого пытаюсь получить, находится сразу по пути com/exemple
lib.gradle модуля
apply plugin: 'java'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.11.0'
}
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
и вот проекта:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Попробовал поочередно в оба build.gradle добавить вот это: не работает. Ни каких папок ресурсов в jar нет и через idea NPE по прежнему.
sourceSets {
main {
resources {
srcDirs "src/main/resources"
}
}
}
Вот так должно работать. Путь нужно указывать относительно папки resources
.
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("parser_uploaded.wav");
Попробуй FileInputStream
.
FileInputStream is = new FileInputStream(new FIle("res/sound.wav"));
Как и заметил etki, проблема была где-то в сборке проекта. Сам проект у меня был очень некорректный. Решил не заморачиваться с поиском конкретной проблемы, а просто создал новый и запустил сборку через Gradle. И файлы появились в конечном jar и находятся корректно. Единственное, что не понял, почему они оказались в корне jar, а не в какой нибудь папке resources. Думаю, об этом надо сообщить gradle.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый день, подскажите пожалуйста, у меня есть база в которую в фоновом режиме записываются входящие сообщения, из этой базы берутся данные...
Я новичок в Java, и вот недавно занялась изучением серверовНачала с Tomcat и с ним проблем не возникло, затем я перешла на Glassfish
Всем доброго времени суток, пожалуйста, помогитеПроблема в том, что уведомления мои показываются раньше времени