在64位的Ubuntu 12.04上安装32位Java(OpenJDK)。

我必须在64位的Ubuntu 12.04上运行Juniper VPN。我已经安装了openjdk-7-jreopenjdk-7-jdkicedtea-7-plugin。在浏览器提示安装Juniper VPN后,我检查它已成功安装到"/home/huangyun/.juniper_networks/network_connect"。

我从命令行打开Firefox并检查日志:

Launching "/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java" "-classpath" "/home/huangyun/.juniper_networks/network_connect/NC.jar" "NC" "-h" "extranet.scei.a-star.edu.sg" "-L" "0" "-l" "0" "-n" "" "-t" "" "-x"

我手动运行了上述命令:

$ java -classpath ~/.juniper_networks/network_connect/NC.jar NC -h extranet.scei.a-star.edu.sg -L 0 -l 0 -n "" -t "" -x
Failed to load the ncui library.
Quitting.

我检查了文件libncui.so,发现这个.so文件是32位版本的。
$ file libncui.so 
libncui.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped

我无法将32位的.so文件重新编译为64位,所以我想在64位的Ubuntu 12.04上安装32位的Java。你能告诉我如何做吗?我在网上搜索了一些信息,但是找到的信息很少。


做出决定需要32位Java的好研究。 :) - lmat - Reinstate Monica
3个回答

回答原始问题:
在12.04和12.10版本上,可以通过在运行apt-get时将":i386"附加到软件包名称来安装i386软件包。因此,例如,在运行amd64 Ubuntu 12.04 Live CD时,我运行了以下命令:
sudo apt-get remove firefox openjdk-6-jdk icedtea-6-plugin
sudo apt-get install firefox:i386 openjdk-6-jdk:i386 icedtea-6-plugin:i386

然后成功登录到VPN。
自12.04版本以来,Juniper VPN在OpenJDK 6上可以直接使用,但仅限于i386架构。之前,icedtea插件中存在一个bug,导致此功能无法正常工作。我已经验证了使用i386 Ubuntu 12.04 Live CD修复了这个问题。
我对于amd64 Oracle JDK能够正常工作感到惊讶。不过,我还没有亲自测试过,但一旦我测试完毕,我会更新这个答案。如果您能确认您现在正在运行的确切软件包,那就太好了。
值得注意的是,Juniper VPN登录过程中有一个可选部分叫做Host Checker,可能在您连接的VPN服务器上配置或未配置;它会在Windows计算机上强制执行安全策略,但仍然需要在Linux上运行以检查您使用的操作系统。这可能导致不同人之间对成功的报告有所不同。作为参考,我使用的VPN已启用Host Checker。
在你的原始问题中,你提到你正在安装Java 7包,但是你的日志显示你在Firefox中使用的是Java 6。如果你安装了多个JDK,请明确你正在使用哪一个。
供参考,Ubuntu论坛上有一个非常长期运行的关于Juniper VPN的帖子。
更新
我现在已经测试了amd64 Oracle JDK,但对我来说无法工作。所以据我所见,安装Oracle JDK或Open JDK的i386版本是唯一能让它正常工作的方法。

对我来说,在12.10版本上运行正常——已更新答案内容以反映这一点。 - belacqua
登录后,Juniper 显然运行了一些主机检查代码。我的电脑在这个页面上卡住了。URL 是 https://(我公司网络上的主机)/dana/home/starter0.cgi?check=yes 我只是将 check=yes 改为 check=no,重新加载页面,然后一切都正常了! - ppbitb


我正在使用ubuntu-12-10-64。我尝试了默认的sun-java-6,但它没有起作用。然后我尝试了Oracle-7,但仍然没有起作用。然而,在我的办公室,我能够在一台ubuntu-12.04-32位机器上设置juniper-vpn-client。有什么建议吗? - Vivek Sharma

使用这里的指示:http://www.rz.uni-karlsruhe.de/~iwr91/juniper/ 我在Ubuntu 12.04 64位上运行Juniper VPN,除了这3个库之外没有安装32位软件。
sudo apt-get install libc6-i386 lib32z1 lib32nss-mdns

我使用--nox选项(无界面)启动jnc perl脚本,效果很好,我每天都在使用。
我最初使用Firefox 64位下载了证书文件: 工具>页面信息>安全>查看证书>详细信息>导出
后来我找到了一个可以完成同样任务的脚本: https://github.com/udomsak/juniper-ncui/blob/master/getx509certificate.sh 我的特定配置文件需要主机、用户、领域和证书文件。你的可能不同。
证书文件位置的配置需要完整的路径名,~符号不能自动扩展为/home/username。

1我首先尝试了这个,因为它比切换到32位Java更快,而且它起作用了!谢谢伙计。 - Leo Gallucci