Java web开发调用外部ffmpeg或mencoder转码...
遇到的问题是ffmpeg或mencoder进程阻塞, 需要停掉tomcat--javaw.exe进程之后才能执行ffmpeg.exe或mencoder.exe
问题的原因: getErrorStream 和 getInputStream 缓冲区没有清空
解决的方法: 同时清空getErrorStream 和 getInputStream 的缓冲区
代码如下:
ProcessBuilder builder = new ProcessBuilder();
builder.command(commend);
Process process = builder.start();
final InputStream is1 = process.getInputStream();
new Thread(new Runnable() {
public void run() {
BufferedReader br = new BufferedReader(new InputStreamReader(is1));
try {
while(br.readLine() != null) ;
} catch (IOException e) {
e.printStackTrace();
}
}
}).start(); // 启动单独的线程来清空process.getInputStream()的缓冲区
InputStream is2 = process.getErrorStream();
BufferedReader br2 = new BufferedReader(new InputStreamReader(is2));
StringBuilder buf = new StringBuilder(); // 保存输出结果流
String line = null;
while((line = br2.readLine()) != null) buf.append(line);
分享到:
- 2009-06-17 13:55
- 浏览 1207
- 评论(1)
- 论坛回复 / 浏览 (0 / 2338)
- 查看更多
相关推荐
### Java调用外部程序命令详解 #### 一、引言 在进行系统集成或自动化脚本编写时,经常需要从Java程序中调用外部程序或命令。这种需求常见于多种场景,例如远程服务管理、批处理操作等。本文将详细介绍如何使用...
本文将详细讲解如何使用Java调用外部程序以及如何捕获并处理程序的输出。 首先,`Runtime.getRuntime().exec()`方法是Java中最基础的调用外部程序的方式。它允许我们执行系统命令,并返回一个`Process`对象,通过该...
这篇博文“用java 调用外部程序”可能详细介绍了如何在Java环境中实现这一功能。虽然描述部分为空,但我们可以基于这个主题展开讨论。 在Java中,调用外部程序的主要方法是使用`Runtime`类或`ProcessBuilder`类。`...
Java 中两种方式调用其他.exe 可执行程序 Java 是一种广泛应用于企业级应用开发的编程语言,可以调用其他.exe 可执行程序,实现一些特殊的功能。在 Java 中有两种方式可以调用其他.exe 可执行程序,即使用 `Desktop...
总结来说,Java调用外部jar文件涉及以下几个关键点: 1. 理解Java类加载机制,包括系统类加载器和自定义类加载器。 2. 创建自定义类加载器,重写`findClass()`方法,从jar文件中读取并加载类。 3. 使用加载的类进行...
首先,我们需要理解Java调用外部程序的基本原理。在Java中,我们可以使用`Runtime`类或`ProcessBuilder`类来执行操作系统级别的命令,例如运行bat文件。以下是一个简单的示例,展示如何使用`Runtime.getRuntime()....
在Java编程中,有时候我们需要执行一些操作系统级别的任务,例如启动一个外部程序、执行一些系统命令等。这通常可以通过Java的`Runtime`类实现,尤其是通过`Runtime.exec()`方法来创建一个新的进程。本文将详细介绍...
总结起来,Java调用Python的jar包涉及到的技术包括但不限于:Java调用外部程序的API、Jython(对于Python 2.7的支持)、Py4J(对于Python 3.x的互操作性),以及如何在Java和Python之间有效地传递数据和控制流程。...
1. **Java调用外部程序**: 在Java中,我们可以通过`Runtime.getRuntime().exec()`或`ProcessBuilder`来调用操作系统级别的命令。例如,要调用`lame.exe`,我们需要构建一个包含所有必要参数的命令字符串,然后执行...
"使用JAVA调用应用程序.pdf" 在本文中,我们将探讨使用 Java 调用应用程序的方法和技术。Java 是一种广泛使用的编程语言,具有强大的功能和灵活性,广泛应用于web开发、安卓应用开发、桌面应用开发等领域。通过 ...
此外,为了安全性和资源管理,避免内存泄漏,最好在调用外部程序后关闭相关流并监控进程状态。这可以通过`Process`对象的`waitFor()`方法实现,等待外部程序完成执行。 总的来说,Java提供了一定的灵活性来调用和...
在Java中,我们可以使用`Runtime.getRuntime().exec()`方法来调用外部程序。这个方法会返回一个`Process`对象,我们可以用它来获取程序的输出流或结束进程。 ```java try { Process process = Runtime....
这不仅有助于理解和掌握Java调用外部程序的基础知识,还能实际应用于各种场景中,比如自动化脚本、数据分析等。 总结而言,在Java中调用外部exe文件是一项实用而强大的技术。通过掌握基本的API和流程,开发人员可以...
3. **安全性考量**:调用外部程序可能会带来潜在的安全风险,尤其是对于不可信的源文件,需要进行严格的验证和限制。 #### 五、总结 通过上述介绍,我们可以看到Java程序调用Windows应用程序是一个非常实用且功能...
首先,Java调用C/C++程序的主要技术是通过Java Native Interface (JNI)。JNI是Java平台的一部分,允许Java代码和其他语言写的代码进行交互。它为Java程序员提供了一种方式来编写本地方法,这些本地方法可以调用由C/...
在探讨Java调用带有JSON参数的WebService之前,我们首先需要了解几个关键的技术概念:Java、JSON以及WebService。 Java是一种广泛使用的编程语言,它具有面向对象、跨平台、多线程以及健壮性等特点。Java在企业级...
调用外部程序后,记得关闭相关的输入输出流,并调用`destroy()`方法结束子进程,以避免资源泄露。 6. **异常处理**: 执行外部命令可能会抛出IOException,需要捕获并处理。 以上就是关于"java中调用控制台程序...
Oracle触发器调用Java程序 Oracle触发器是Oracle数据库中的一种机制,可以在数据库中执行特定的操作。在本文中,我们将介绍如何使用Oracle触发器调用Java程序。 一、加载Java程序 首先,我们需要将Java程序加载到...
以下是一个简单的Java调用SAP RFC的示例代码片段: ```java import com.sap.conn.jco.*; public class SapRfcExample { public static void main(String[] args) { try { JCoDestination destination = ...
Java调用WebService程序是开发中常见的一种跨平台通信方式,主要通过SOAP(Simple Object Access Protocol)协议实现。本文将深入探讨如何使用Java来调用WebService接口,并涉及所需的库和步骤。 首先,理解...