使用Process对象反编译一个.class类型文件,进程抛出一个异常

Just for fun! :-) Just for fun! :-) 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
使用Process对象反编译一个.class类型文件,进程抛出一个异常:
// 运行操作系统命令,并将输出发送到控制台。
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)

反编译命令执行正常,但老是抛出一个异常。请问这是什么原因造成的?如何解决?
...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部
Just for fun! :-)
Java 51,407 成员 86,129 内容