(Java) 尝试使用 getResourceAsStream() 从 JAR 文件加载剪辑,但仅适用于我的 IDE
(Java) Trying to load a clip from JAR file using getResourceAsStream(), but works only on my IDE
我正在尝试从我的 JAR 文件加载一个剪辑,但它只在我的 IDE (NetBeans) 中有效,而在我 运行 它的 JAR 可执行文件中无效。
这是我在 returns 剪辑中使用的代码:
public static Clip getClipFromJar(String filePath) {
try {
Clip clip = AudioSystem.getClip();
clip.open(AudioSystem.getAudioInputStream(FileLoader.class.getResourceAsStream(filePath)));
return clip;
} catch (Exception error) {
System.exit(-1);
return null;
}
}
我真的卡住了,使用 getResourceAsStream() 似乎适用于图像等其他东西,但它不适用于获取剪辑。
感谢大家的帮助!我从你们那里得到的技巧通常对编程很有用,所以谢谢! :)
getResourceAsStream()
在 class 路径上寻找它的资源,从 class 本身的位置开始——所以如果你的剪辑(或任何资源)在同一个文件夹作为 class,它会在那里找到它。如果它不存在,您必须确保将它放在 class 路径中的某处,这听起来可能是您的 IDE 环境和程序运行时之间的差异。
看看你也有 'filepath' -- 如果它当然以斜杠开头,它是绝对的,等等;我假设您知道绝对路径和相对路径。
调试建议 -- 消除所有 'stacking' 调用。一通电话获取流;再次调用获取音频输入流,第三次调用打开它。然后您至少可以放入跟踪语句以查看其中哪一个失败了(因为您无法在 IDE 之外进行调试,并且它不会在那里失败)。
获取 URL ,处理 AudioInputStream
和 AudioSytem
然后 return clip
。 clip
之后可以像 clip.start()
一样启动
try{
URL soundURL = getClass().getResource(filePath);
AudioInputStream AIS = AudioSystem.getAudioInputStream(soundURL);
Clip clip = AudioSystem.getClip();
clip.open(AIS);
return clip;
} catch (Exception ex) {
ex.printStackTrace();
}
注意: 我试过这段代码,它在 IDE 和
之外都能正常工作
我正在尝试从我的 JAR 文件加载一个剪辑,但它只在我的 IDE (NetBeans) 中有效,而在我 运行 它的 JAR 可执行文件中无效。
这是我在 returns 剪辑中使用的代码:
public static Clip getClipFromJar(String filePath) {
try {
Clip clip = AudioSystem.getClip();
clip.open(AudioSystem.getAudioInputStream(FileLoader.class.getResourceAsStream(filePath)));
return clip;
} catch (Exception error) {
System.exit(-1);
return null;
}
}
我真的卡住了,使用 getResourceAsStream() 似乎适用于图像等其他东西,但它不适用于获取剪辑。
感谢大家的帮助!我从你们那里得到的技巧通常对编程很有用,所以谢谢! :)
getResourceAsStream()
在 class 路径上寻找它的资源,从 class 本身的位置开始——所以如果你的剪辑(或任何资源)在同一个文件夹作为 class,它会在那里找到它。如果它不存在,您必须确保将它放在 class 路径中的某处,这听起来可能是您的 IDE 环境和程序运行时之间的差异。
看看你也有 'filepath' -- 如果它当然以斜杠开头,它是绝对的,等等;我假设您知道绝对路径和相对路径。
调试建议 -- 消除所有 'stacking' 调用。一通电话获取流;再次调用获取音频输入流,第三次调用打开它。然后您至少可以放入跟踪语句以查看其中哪一个失败了(因为您无法在 IDE 之外进行调试,并且它不会在那里失败)。
获取 URL ,处理 AudioInputStream
和 AudioSytem
然后 return clip
。 clip
之后可以像 clip.start()
一样启动
try{
URL soundURL = getClass().getResource(filePath);
AudioInputStream AIS = AudioSystem.getAudioInputStream(soundURL);
Clip clip = AudioSystem.getClip();
clip.open(AIS);
return clip;
} catch (Exception ex) {
ex.printStackTrace();
}
注意: 我试过这段代码,它在 IDE 和
之外都能正常工作