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 中可以)的主要内容,如果未能解决你的问题,请参考以下文章
Hadoop环境 IDE配置(在eclipse中安装hadoop-eclipse-plugin-2.7.3.jar插件)