solaris上仅支持jdk 8u291或openjdk 8社区版,需先用uname -m和isainfo -v确认架构与位数,解压至非root路径并设执行权限,按shell类型正确配置java_home与path,补充ld_library_path以解决libsocket.so.1等依赖缺失问题。

确认 Solaris 架构和 JDK 版本兼容性
Solaris 不是“装个 JDK 就行”的系统,sparc 和 x86_64 架构的二进制包完全不通用,且 Oracle 官方早在 JDK 11 后就停止为 Solaris 提供新版本。你现在能用的主流选择只有:JDK 8u291(最后支持 Solaris 的官方版本)或 OpenJDK 8 的社区构建版(如 openjdk8-solaris-sparc-bin)。
- 运行
uname -m确认是i86pc(x86)还是sun4v/sun4u(SPARC) - 运行
isainfo -v查看是否支持 64-bit:输出含amd64或sparcv9才能装 64-bit JDK - 别试 JDK 17+:Oracle 已移除 Solaris port,强行解压会报
cannot execute binary file
解压安装包到非 root 路径并验证权限
Solaris 默认不鼓励把 JDK 装在 /usr/jdk/instances 这类系统路径——尤其当你没 root 权限时。更稳妥的做法是解压到用户目录或共享挂载点,但必须确保 bin/java 可执行且库路径可读。
- 用
gzip -dc jdk-8u291-solaris-x64.tar.gz | tar -xf -解压,避免因tar版本老(如 Solaris 10 自带的)不支持--strip-components - 检查
bin/java是否有执行权限:ls -l jdk1.8.0_291/bin/java,若无则运行chmod +x jdk1.8.0_291/bin/java - 运行
./jdk1.8.0_291/bin/java -version,若报ld.so.1: java: fatal: libjli.so: open failed: No such file or directory,说明LD_LIBRARY_PATH没包含jre/lib/sparcv9(SPARC)或jre/lib/amd64(x86)
配置 PATH 和 JAVA_HOME 时绕过 csh/tcsh 的变量继承陷阱
Solaris 用户常混用 bash 和 csh,而 csh 的环境变量语法和导出逻辑完全不同,export JAVA_HOME=... 在 .cshrc 里直接无效。
系统易学易懂,用户只需会上网、不需学习编程及任何语言,只要使用该系统平台,只要会打字,即可在线直接完成建站所有工作。本程序适合不懂php环境配置的新手用来在本机调试智能SiteSEO网站优化软件,安装过程极其简单。您的网站地址:http://localhost您的网站后台:登录地址: http://localhost/admin.php密 码: admin服务器套件所包含的软件:nginx-0.7
- 在
.profile(bash/ksh)中写:JAVA_HOME=/export/home/user/jdk1.8.0_291; export JAVA_HOME; PATH=$JAVA_HOME/bin:$PATH; export PATH - 在
.cshrc(csh/tcsh)中写:setenv JAVA_HOME /export/home/user/jdk1.8.0_291; setenv PATH ${JAVA_HOME}/bin:$PATH - 改完后别只
source .profile,要新开 shell 或运行exec $SHELL,否则which java还可能指向旧的/usr/bin/java -
java -version输出里若仍显示Java(TM) 2 Runtime Environment,说明系统级软链/usr/bin/java还在生效,用ls -la /usr/bin/java确认,必要时跳过它直接调用绝对路径
验证 JRE 运行时依赖是否完整(尤其缺少 libsocket.so.1)
Solaris 上 Java 网络组件依赖系统级 C 库,JDK 8u291 在较新 Solaris 11.4 上可能缺 libsocket.so.1 符号,导致 java.net 相关类加载失败或 DNS 解析卡住。
立即学习“Java免费学习笔记(深入)”;
- 运行
ldd jdk1.8.0_291/jre/bin/java,检查输出中是否有libsocket.so.1 => (file not found) - 若缺失,先查系统是否存在:
find /usr/lib -name 'libsocket.so*',常见路径是/usr/lib/libsocket.so.1 - 若存在但未被找到,临时加到
LD_LIBRARY_PATH:export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH - 该问题在 Solaris 10 Update 11+ 和 Solaris 11.3+ 较少见,但定制内核或精简安装的系统极易出现
真正麻烦的不是装不上,而是装上了却在某个网络调用里静默失败——比如 URL.openConnection() 卡住 30 秒才超时,这种得靠 truss -f -t bind,connect,send,recv java YourApp 抓系统调用才能定位。









