Answers:
我刚刚在http://ubuntuforums.org/showthread.php?p=11757928上发布了该问题的答案。
WebEx applet使用专有的本机模块来访问声音软件。它是32位.so,因此不能由64位JVM加载。通常的解决方案似乎是在您每次使用WebEx时都运行32位浏览器。作为替代方案,我修补了nspluginwrapper实用程序,以便您可以从64位浏览器运行32位Java插件(我已经在Firefox上进行了测试,它也可以在Chrome上运行)。
从http://nspluginwrapper.org/download/下载nspluginwrapper的最新资源。
在方便的位置展开文件(tar -xvzf)
将以下修补程序应用于文件npw-viewer.c:
--- npw-viewer.c 2011-06-30 23:18:57.000000000 -0400
+++ nspluginwrapper-1.4.4/src/npw-viewer.c 2012-03-11 14:09:35.104158681 -0400
@@ -5128,6 +5128,17 @@
}
handles[n_handles++] = handle;
dlerror();
+#else
+ /* Install libstdc++ for java */
+ const char libstcpp[] = "libstdc++.so.6";
+ D(bug(" trying to open standard C++ runtime '%s'\n", libstcpp ));
+ if ((handle = dlopen(libstcpp, RTLD_LAZY|RTLD_GLOBAL)) == NULL) {
+ npw_printf("ERROR: %s\n", dlerror());
+ return 1;
+ }
+ handles[n_handles++] = handle;
+ dlerror();
+
#endif
D(bug(" %s\n", plugin_path));
if ((handle = dlopen(plugin_path, RTLD_LAZY)) == NULL) {
您可能需要获取一些其他库才能使工作正常。我特别安装了:
sudo apt-get install libcurl4-nss-dev libxt-dev libgtk2.0-dev g++-multilib
YMMV。
获取依赖关系后,其:
./configure
make
sudo make install
然后,您将需要一个32位的jre。可以从Oracle网站下载并安装。
最后,找到该文件libnpjp2.so
在lib
32位Java安装目录。我在中找到它/usr/lib/jvm/ia32-java-6-sun/jre/lib/i386/
。
执行
sudo nspluginwrapper -i /usr/lib/jvm/ia32-java-6-sun/jre/lib/i386/libnpjp2.so
(或安装Java的任何地方。)
然后(重新)启动Firefox。在地址栏中输入“ aboutlugins”。您应该看到新安装的32位Java插件。
尝试通过声音加入WebEx会议
我知道这个线程是陈旧的,但是我花了2天的时间使Dan Menes提供的解决方案可以工作(并且Dan的方法确实可行),但是我还想分享一些其他步骤,这样其他人就不会失去12像我所做的调整一样工作数小时。所以,我们开始:
首先,我无法以通常的方式通过“ patch”命令应用Dan的补丁。当我尝试这样做时,出现了以下错误(与海报“ NW Tech”相同的错误,即:
Hunk#1失败5128
在解决该问题之前,我先删除了所有现有的Java-全部!我遇到一个问题,当我运行webex时,我不确定5个或6个安装的Java中的6个和7个都在使用,并且由于我不知道如何确定,因此我只删除了所有Java。用于webex的那个,这样我可以确定。您可以这样做,或者如果您知道如何做,请确保firefox如下所述使用包装的Java。如果您选择像我一样先删除所有Java,那么对于可能会破坏您的一切我不承担任何责任-我只是专注于解决此webex问题,而在Ubuntu Linux上通过计算机没有音频,因此我想确保我肯定使用的是包装好的32位Java,因此请确保将其他所有Java都撕掉了。
所以,继续...
另外,我使用的是JDK 1.6(1.6.0_45)的最新发行版,而不是JDK 1.7(它可能可以工作,但我没有测试过它,不在乎我已经解决了这个令人烦恼的问题1.6用于Webex声音的64位包装Java ,所以,好!我完成了!)。
在安装Oracle Sun Java 1.6.0_45之前,我已经完全删除了Ubuntu 12.04上所有现有的Java。为此,我使用了以下步骤:
sudo apt-get update
apt-cache search java | awk '{print($1)}' | grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e 'java-common' | xargs sudo apt-get -y remove
sudo apt-get -y autoremove
运行完这些步骤之后,我安装了JDK 1.6.0_45,然后将其安装在替代产品中,然后检查以查看替代产品仅具有1.6.0_45,以确保我确实选择了为64位浏览器包装的java-32。通缉。
但是,在我无法做到这一点之前,我不得不将其放入替代方式,我这样做是这样的:
sudo update-alternatives --install“ / usr / bin / java”“ java”“ / usr / lib / jvm / java-6-oracle / bin / java” 1050
(您的java32 jdk6的位置可能有所不同-这就是我放置的位置)。
知道数字1050是什么意思-这是“优先级”,我不知道这是否重要。我的替代方案现在看起来像这样:
gstanden@Ubuntu1204:/usr/lib/mozilla/plugins$ sudo update-alternatives --config java
[sudo] password for gstanden:
There is 1 choice for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-6-oracle/bin/java 1050 auto mode
* 1 /usr/lib/jvm/java-6-oracle/bin/java 1050 manual mode
Press enter to keep the current choice[*], or type selection number:
gstanden@Ubuntu1204:/usr/lib/mozilla/plugins$
因此,在睡觉之后,在Satuday早上,我看了第5128行的代码,只是手动将补丁粘贴到文件中,因为补丁无法自动应用。
/home/gstanden/Downloads/nspluginwrapper-1.4.4/src/npw-viewer.c
以下是片段前后,它们显示了如何放置修补代码:
这是修补的npw-viewer.c与未修补的npw-viewer.c的区别:
gstanden@Ubuntu1204:~/Downloads/nspluginwrapper-1.4.4/src$ diff npw-viewer.c npw-viewer.c.bak
5129,5138c5129,5130
< #else
< /* Install libstdc++ for java */
< const char libstcpp[] = "libstdc++.so.6";
< D(bug(" trying to open standard C++ runtime '%s'\n", libstcpp ));
< if ((handle = dlopen(libstcpp, RTLD_LAZY|RTLD_GLOBAL)) == NULL) {
< npw_printf("ERROR: %s\n", dlerror());
< return 1;
< }
< handles[n_handles++] = handle;
< dlerror();
---
> handles[n_handles++] = handle;
> dlerror();
如果您只是想追逐目标,那么这里是受影响的行,为方便起见显示了行号。我只是手工输入了一个已应用的Dan补丁,因为“补丁”给出了错误,并且可以正常工作。
从5128行开始,这是应用补丁后的外观:
5128 }
5129 #else
5130 /* Install libstdc++ for java */
5131 const char libstcpp[] = "libstdc++.so.6";
5132 D(bug(" trying to open standard C++ runtime '%s'\n", libstcpp ));
5133 if ((handle = dlopen(libstcpp, RTLD_LAZY|RTLD_GLOBAL)) == NULL) {
5134 npw_printf("ERROR: %s\n", dlerror());
5135 return 1;
5136 }
5137 handles[n_handles++] = handle;
5138 dlerror();
5139 #endif
5140 D(bug(" %s\n", plugin_path));
5141 if ((handle = dlopen(plugin_path, RTLD_LAZY)) == NULL) {
请注意,应该在第5139行和第5129行的“#”字符存在,不要删除它们,在代码中保留#。当然,行号不会出现在完成的编辑文件中,它们只是在此处显示,以方便您查找此修补代码的去向。
现在,您可以从命令行继续运行make:
cd /home/gstanden/Downloads/nspluginwrapper-1.4.4
make
好吧,make会出错。海报“ 910Radar”想出了那个。您必须在make命令上附加一些代码片段,然后手动运行它。您可以在此处看到“ 910Radar”帖子:http ://ubuntuforums.org/showthread.php?t=1858097
他所做的(以及我所做的)是手动运行make命令的,如下所示(并且有效)。该命令在这里,只需将其粘贴到命令行中即可:
gcc -std=c99 -o npplayer npplayer-npw-player.o npplayer-debug.o npplayer-rpc.o npplayer-utils.o npplayer-glibcurl.o npplayer-gtk2xtbin.o -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0 -lglib-2.0 -lcurl -lXt -lX11 -lpthread -lgthread-2.0
而且有效。现在,您可以为“ nspluginwrapper”运行“ make install”,然后可以运行它来包装已安装的32位Java,以便64位firefox可以使用它,该命令为:
sudo nspluginwrapper -i /usr/lib/jvm/java-6-oracle/jre/lib/i386/libnpjp2.so
它应该返回没有错误和消息的命令提示符。请注意,如果您的libnpjp2.so位于其他目录中,那么请使用您的路径。
我还发现,尽管pulseaudio在我的Ubuntu 12.04(YouTube,视频等)上运行,但“测试音频”在Ubuntu设置的“声音”面板上却无法运行。确定修复在Ubuntu上发现的声音问题是个好主意,我也修复了该问题。我发现解决该问题需要执行以下步骤:
sudo apt-get install libcanberra-pulse
然后,一旦完成,“测试”左右扬声器将非常好用(柔和的女性声音对您说话,多么好听,告诉您您的扬声器在每一侧都在工作,多么可爱)。
另外,如果您曾经去过说剥除pulseaudio的页面,并且像我一样找到了,那么就解决webex问题没有修复计算机声音的问题而言,剥除pulse音频是行不通的(至少对我而言不是这样) ),则可以使用以下命令将Pulse Audio以及pulseaudio的工具栏小部件放回Ubuntu 12.04:
sudo apt-get install pulseaudio
sudo apt-get install indicator-sound
(将脉冲音频放回去,然后将指示器放回顶部的小部件上)。完成此操作后,您可能需要重新启动。
现在尝试一下,并希望我能记住所有步骤,您将能够在64位Ubuntu 12.04上的64位mozilla firefox浏览器上运行webex声音,并且可以通过计算机正常运行内置的webex声音!在webex中单击“使用我的电脑”以获取声音时,会打开一个小程序。
尽情享受,并感谢Dan Menes和“ 910Radar”以及其他许多“未知海报”,他们发布了有关如何修补src代码,如何向java替代项添加条目等基本内容的帖子,所有这些使最终解决这一问题成为可能我的Ubuntu笔记本电脑上的问题!