【问题标题】:Error running firefox through java通过java运行firefox时出错
【发布时间】:2014-05-08 18:17:02
【问题描述】:

我有一个 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"

因此,上面带有上述 shell 脚本的 java 代码适用于大多数系统,但是 在我们的一个测试服务器中测试上述代码时,它失败并在标准输出上给出以下错误:

*STDERR [ld.so.1: firefox-bin: fatal: libssl3.so: version 'NSS_3.12.6' not found (文件 /usr/lib/firefox/libxul.so 需要)

ld.so.1: firefox-bin: fatal: libssl3.so: open failed: No such file or directory

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

当我们看到上述错误时,我们认为该服务器上的 firefox 存在问题,但我们错了,因为当我们从终端运行相同的脚本时,它就像一个魅力。

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

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

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

【问题讨论】:

    标签: java shell firefox solaris


    【解决方案1】:

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

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

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

    【讨论】:

    • 但同样的工作在具有相同配置的不同服务器上。仅设置了 DISPLAY 变量。我仍然会按照您的建议进行检查。实际上,我们无法非常频繁地访问该测试服务器,所以我想了解每个可能出错的情况,以便当我获得访问权限时,我可以测试每个可能的解决方案。如果发现任何更多建议将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 2015-04-07
    • 2016-12-17
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 2015-09-29
    • 2019-08-29
    • 1970-01-01
    相关资源
    最近更新 更多