我正在我的Delphi应用程序中构建一个命令提示符进程,它能够与JDB交互以编译,运行和调试Java应用程序。 Cmd输入/输出/错误是通过从cmd到/从我的Delphi应用程序UI进行流水线操作来处理的。
当使用'System.out'/'System.err'指向我的Delphi应用程序的一个组件时,我想要java程序的输出,我希望从我的delphi应用程序输入发送到'System.in “允许我在我的Delphi UI中构建一个控制台,类似于Eclipse IDE中的控制台。
关于方法的一些想法;
注意 - 我已经尝试搜索Eclipse源代码,看看他们是如何做到的,但是因为它是用Java编写的,我怀疑他们不会遇到我将面临的跨语言问题。
答案 0 :(得分:0)
我找到了解决问题的方法。您需要两个命令提示符进程,每个进程在Delphi中使用读取,写入和错误管道构建。
其中一个运行Java应用程序,并设置为等待在执行之前附加调试器,另一个用于调试并附加到等待的Java应用程序。
这是主要的应用程序;所有应用程序控制台输入/输出/错误都将通过此过程处理。
java -agentlib:jdwp=transport=dt_shmem,address=DelphiExecutingAppAddress,server=y,suspend=y MyClassFile.java
这是针对调试器的;所有jdb控制台输入/输出/错误都将通过此过程处理(断点,恢复,获取对象详细信息)。
jdb -attach DelphiExecutingAppAddress
N.B。也许这就是大卫所指的?在第一次练习中没有找到这个时,看起来我的错误就是读取jdb文档。也许这个帖子可能会帮助别人。