java - 通过java运行firefox时出错

标签 java shell firefox solaris

我有一个java GUI,其按钮单击事件打开本地tomcat 服务器上存在的特定jsp 页面。为了打开该特定网页,我们使用 firefox,并且我们没有直接运行 firefox,而是在 java 中执行一个脚本,该脚本依次执行 firefox 并加载页面。我知道这看起来很奇怪,但这不是我的设计决定,这些是我需要遵循的命令。此代码已经由其他人编写,只是在特定服务器上遇到了一个问题。

为了简单起见,我复制了按钮单击功能代码并用它制作了一个新的java程序,如下所示:

import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ProcessExample {

public static void main(String[] args) {

    String[] envp = {"DISPLAY=:0.0"};
        Process p1 = null;
    try {
        p1 = Runtime.getRuntime().exec("/home/msatyam/test.sh", envp);
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }

     BufferedReader input = new BufferedReader(new InputStreamReader(p1.getInputStream()));
    try {
        System.out.println(input.readLine());
    } catch (IOException ex) {
        Logger.getLogger(ProcessExample.class.getName()).log(Level.SEVERE, null, ex);
    }
}

}

运行firefox浏览器“test.sh”的脚本如下:

#!/bin/bash

firefox "localhost"

所以,上面的 java 代码和上面的 shell 脚本对于大多数系统来说都可以正常工作,但是 在我们的一台测试服务器中测试上述代码时,它失败并在标准输出上给出以下错误:

*STDERR [ld.so.1:firefox-bin:致命:libssl3.so:找不到版本“NSS_3.12.6” (文件/usr/lib/firefox/libxul.so 需要)

ld.so.1:firefox-bin:致命:libssl3.so:打开失败:没有这样的文件或目录

ld.so.1:firefox-bin:致命:重定位错误:文件/usr/lib/firefox/libxul.so:符号 SSL_NumImplementedCiphers:未找到引用的符号已被杀死*

当我们看到上述错误时,我们认为该服务器上的 Firefox 有问题,但我们错了,因为当我们从终端运行相同的脚本时,它运行得非常顺利。

测试服务器正在 Solaris 10 上运行。

而且我还仔细检查了该服务器中的 libssl3.so ,该服务器位于目录下: /usr/lib/firefox

可能有什么问题,因为这个 shell 脚本在通过终端运行时工作正常,但在通过上面的 java 代码运行时不起作用。

最佳答案

问题很可能是您在执行 Firefox 之前删除了所有系统环境变量,并将它们全部替换为单个变量 DISPLAY .

您可以运行env -i DISPLAY=:0.0 /home/msatyam/test.sh从命令行模拟您在 Java 中所做的事情。

如果这重现了问题,您应该获取所有系统的环境变量(使用 System.getenv() )并附加 DISPLAY=:0.0到该列表,然后运行您的脚本。

关于java - 通过java运行firefox时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23549549/

相关文章:

java - 如何知道我的应用程序是否在 JBoss 服务器上运行?

java - Intellij-idea 每次模板更改时都需要制作和构建 xx.war 吗?

javascript - jquery 的 mouseover/out 功能仅在 Firefox 中的单击事件之后起作用

Win/Linux/Mac Logo Position 之间的 CSS 位置

javascript - 在 Firefox 中生成 'custom colour dialog'

Java 属性驱动集合

java - 使用 tagsoup 构建 DOM 文档

java - 是否有与 package.jsons "bin"等效的 Java/Maven?

linux - 获取不同的扩展名列表 Linux

linux - 在 shell 脚本中打印正确的输出