Linux 上的 IDE 下没有声音(在 Jar 中可以)

Posted

技术标签:

【中文标题】Linux 上的 IDE 下没有声音(在 Jar 中可以)【英文标题】:No sound under in IDE on Linux (OK in Jar) 【发布时间】:2013-11-30 08:05:01 【问题描述】:

我在 Linux 平台上使用 openjdk-1.6(这是一个要求) 我需要播放流音频。基于这个例子http://www.java2s.com/Code/Java/Development-Class/PlayingStreamingSampledAudio.htm

我是这样写的:

SourceDataLine.Info info = new DataLine.Info(....);
SourceDataLine line = (SourceDataLine) Audiosystem.getLine(info);
line.open(stream.getFormat());
line.start();

但问题出在一行

line.open(stream.getFormat());

系统支持使用的格式。

我有LineUnavailableException

但问题是我只有在eclipse下才有这个异常。当我创建可执行 jar 并运行它时 - 一切正常 - 没有例外。

据我从谷歌搜索和一些实验中了解到 - 问题在于安全限制。可执行 jar 在当前用户下运行并且可以访问声音设备,而 eclipse 不知何故。我尝试将所有系统用户添加到音频组,尝试以 root 身份运行 eclipse ......没有任何帮助。

我不是 Linux 和 eclipse 的专家。有谁知道如何解决这个问题或至少如何更改 Eclipse 的安全限制?

任何想法将不胜感激!

【问题讨论】:

“问题在于安全限制” 不太可能。 “我写了这样的东西” 为了尽快获得更好的帮助,请发帖SSCCE。添加代码以打印出运行代码的 JRE 的属性。我怀疑 Eclipse 使用的虚拟机与操作系统不同。 【参考方案1】:

这是我在代码中的确切示例。

int sampleRate = 40000;
int sampleBits = 16;
SourceDataLine _line;           
AudioFormat format = new AudioFormat(sampleRate,sampleBits,1,true, true);
SourceDataLine.Info info = new SourceDataLine.Info(SourceDataLine.class, format);
_line  = (SourceDataLine)AudioSystem.getLine(info);
_line.open(format);

【讨论】:

【参考方案2】:

由于我打印的属性被认为是错误代码,这里是 JRE 属性列表的链接(在 eclipse 下): https://docs.google.com/document/d/1ef4f8GvEprhWWrrA57B0p2w6h5qOio4Wjz0ycY9-_0Q/edit?usp=sharing

这里使用可执行jar:

https://docs.google.com/document/d/1lxbPIa4YUwURCdUZsCNL1Iehq--OT2eu35Q0QHKonEg/edit?usp=sharing

说实话 - 没有发现任何刑事差异......

【讨论】:

以上是关于Linux 上的 IDE 下没有声音(在 Jar 中可以)的主要内容,如果未能解决你的问题,请参考以下文章

解决Kali Linux没有声音

没有 IDE 时如何在项目中添加/引用 .jar 文件

Hadoop环境 IDE配置(在eclipse中安装hadoop-eclipse-plugin-2.7.3.jar插件)

[每个全局]按键上的声音(linux)

操场上的 Swift AVFoundation 不输出声音

Java/Linux:错误卡上的声音输出