Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过java运行firefox时出错_Java_Shell_Firefox_Solaris - Fatal编程技术网

通过java运行firefox时出错

通过java运行firefox时出错,java,shell,firefox,solaris,Java,Shell,Firefox,Solaris,我有一个JavaGUI,它的按钮点击事件打开本地tomcat服务器上的特定jsp页面。为了打开特定的网页,我们使用firefox,而且我们也没有直接运行firefox,我们用java执行一个脚本,然后执行firefox并加载页面。我知道这看起来很奇怪,但这不是我的设计决定,这些是我需要遵循的命令。此代码已由其他人编写,但在特定服务器上遇到一个问题 为了简单起见,我复制了button click函数代码,并用它制作了一个新的java程序,如下所示: import java.io.*; import

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

为了简单起见,我复制了button click函数代码,并用它制作了一个新的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);
    }
}
#!/bin/bash

firefox "localhost"
}

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

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);
    }
}
#!/bin/bash

firefox "localhost"
因此,上面的java代码和上面的shell脚本可以很好地用于大多数系统,但是 在我们的一个测试服务器中测试上述代码时,它失败,并在stdout上出现以下错误:

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

ld.so.1:firefox bin:fatal:libssl3.so:open失败:没有这样的文件或目录

ld.so.1:firefox bin:fatal:relocation错误:file/usr/lib/firefox/libxul.so:symbol SSL\u 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
附加到该列表中,然后运行您的脚本。

但相同的脚本在具有相同配置的不同服务器上工作。仅设置了显示变量。我仍将按照您的建议进行检查。实际上,我们无法经常访问该测试服务器,因此我希望获得可能出错的每个条件,以便当我获得访问权限时,我可以测试每个可能的解决方案。如有任何建议,将不胜感激。