使用Process对象反编译一个.class类型文件,进程抛出一个异常
使用Process对象反编译一个.class类型文件,进程抛出一个异常:
// 运行操作系统命令,并将输出发送到控制台。
运行该程序后,结果如下:
Compiled from "OSExecuteDemo.java"
public class io.OSExecuteDemo {
public io.OSExecuteDemo();
public static void main(java.lang.String[]);
}
警告: 二进制文件/bin/io/OSExecuteDemo包含io.OSExecuteDemo
Exception in thread "main" io.OSExecuteException: Errors executing javap /bin/io/OSExecuteDemo
at io.OSExecute.command(OSExecute.java:34)
at io.OSExecuteDemo.main(OSExecuteDemo.java:6)
反编译命令执行正常,但老是抛出一个异常。请问这是什么原因造成的?如何解决?
// 运行操作系统命令,并将输出发送到控制台。
package io;
import java.io.*;
public class OSExecute {
public static void command(String command) {
boolean err = false;
try {
// 根据传入的命令序列,创建一个进程
Process process = new ProcessBuilder(command.split(" ")).start();
// 获得该进程的输出流
BufferedReader results = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String s;
while((s = results.readLine()) != null)
System.out.println(s);
// 获得该进程的错误流
BufferedReader errors = new BufferedReader(
new InputStreamReader(process.getErrorStream(), "GBK"));
// 如果出现问题,报告错误并将非零值返回给调用进程:
while((s = errors.readLine()) != null) {
System.err.println(s);
err = true;
}
} catch(Exception e) {
// 如果是Windows 2000,它会抛出默认命令行的异常:
if(!command.startsWith("CMD /C"))
command("CMD /C" + command);
else
throw new RuntimeException(e);
}
// 如果进程自身在执行过程中产生错误,则抛出单独定制的运行时异常
if(err)
throw new OSExecuteException("Errors executing " + command);
}
}
package io;
public class OSExecuteDemo {
public static void main(String[] args) {
// 反编译OSExecuteDemo
OSExecute.command("javap /bin/io/OSExecuteDemo");
}
}运行该程序后,结果如下:
Compiled from "OSExecuteDemo.java"
public class io.OSExecuteDemo {
public io.OSExecuteDemo();
public static void main(java.lang.String[]);
}
警告: 二进制文件/bin/io/OSExecuteDemo包含io.OSExecuteDemo
Exception in thread "main" io.OSExecuteException: Errors executing javap /bin/io/OSExecuteDemo
at io.OSExecute.command(OSExecute.java:34)
at io.OSExecuteDemo.main(OSExecuteDemo.java:6)
反编译命令执行正常,但老是抛出一个异常。请问这是什么原因造成的?如何解决?
...全文
相关推荐
android 混淆出错 Can't process class 解决办法
当出现"Can't process class"错误时,通常是因为以下原因:1. **类路径问题**:确保你的类路径设置正确,包含了所有需要处理的类文件。
CS中使用Process调取Windows中的进程(应用程序)示例代码.zip
(); }}```这段代码首先创建了一个`Process`对象,然后通过`StartInfo`属性设置了要启动的应用程序(Calculator的可执行文件名"calc.exe")。
c#控制台面向对象练习通过进程打开txt文件
在这个练习中,你可以创建一个类,如`TextFileOpener`,它包含用于打开TXT文件的相关属性和方法。接着,我们要了解如何在C#中使用进程(Process)。
c#利用进程(Process)调用系统应用程序源码
以下是一个简单的示例,演示如何使用Process.Start()方法启动计算器程序:```csharpusing System.Diagnostics;class Program{ static void
C#关闭指定名字进程的方法
进程是计算机中运行的应用程序实例,每个进程都有一个唯一的标识符(PID)和一个或多个关联的线程。在C#中,我们可以使用System.Diagnostics命名空间下的Process类来与进程进行交互。


