java - 从 java 应用程序执行 Lynx

标签 java linux runtime lynx

我想为我的服务器开发一个 java 应用程序,但我需要对网站 API (Twitch) 进行身份验证。为此,我需要通过网页连接到帐户,因此我想使用 Lynx 来执行此操作。但是,当我尝试从 java 应用程序启动 Lynx 时,程序挂起,并且不执行任何操作:

Runtime rt = Runtime.getRuntime();

        try{

            if (os.contains("win")) {

                // this doesn't support showing urls in the form of "page.html#nameLink"
                rt.exec( "rundll32 url.dll,FileProtocolHandler " + url);

            } else if (os.contains("mac")) {

                rt.exec( "open " + url);

            } else if (os.contains("nix") || os.contains("nux")) {

                // Build a command string which looks like "browser1 "url" || browser2 "url" ||..."
                StringBuffer cmd = new StringBuffer();
                    cmd.append( "lynx" + " \"" + url + "\" ");
                rt.exec(new String[] { "sh", "-c", cmd.toString() });

            } else {
                return;
            }
        }catch (Exception e){
            return;
        }

显然这是因为 Runtime.getRuntime().exec() 在某些条件下可能无法工作,但我找不到任何与 Lynx 工作相关的内容。

服务器操作系统:Ubuntu服务器14.10

最佳答案

Runtime.exec() 返回一个 Process,您应该从它的 stdout 输出中读取并写入它的 stdin(如果程序需要它)。

具体可以看这篇文章http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html部分为什么 Runtime.exec() 挂起

顺便说一句。目前在 java 中执行进程的首选方法是使用 ProcessBuilder。

关于java - 从 java 应用程序执行 Lynx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32912330/

相关文章:

java - java如何区分apache beam中KV实例中的两个键?

linux - 连接 lapack 时遇到问题

java - 从 Java 配置文件中读取配置参数的最佳方法是什么?

algorithm - 关于对数的大 O 表示法

.net - .NET 如何解析类型?

java - 每个 spring 源代码 ide 的 springframework.org/tags 表单的 Maven 引用?

java - 如何延迟一个方法

java - Hibernate 与 oracle 序列根本不起作用

linux - 在 VMWare Fusion : Filesystem Not Found 下的 RedHat Linux 中启动时内核崩溃

linux - 如何获取 zip 中的目录列表?