创建Java程序,处理来自另一个Java程序的输出

时间:2013-11-20 09:02:35

标签: java

我有一个Java程序可以转换Image并生成这些图像的特征 (平均红色,Stdev红色等) 我这样运行程序 java -jar TheProgram.jar Picture.jpg 哪个产生这个输出 FileName [feature1,feature2,..]

但是我需要将这些输出处理成更合适的格式,我将使用Java来处理输出。问题是我不知道如何在Java源代码中调用TheProgram.jar。

2 个答案:

答案 0 :(得分:0)

一种方法是使用

Class jarClass = Class.forName("com.className");
ClassName c = jarClass.newInstance();
Method mainMethod  = Class.getMethod("main", String[]);
Method.invoke(c, "Picture.jpg");

将ClassName替换为main方法所在jar中Class的名称。

答案 1 :(得分:0)

首先,运行程序的方法如下:

  1. 使用“jar -xv TheProgram.jar”解压缩JAR文件
  2. 在编辑器中打开MANIFEST.mf文件,然后查找“Main-Class”条目。这给你一个班级名称;例如“com.example.TheProgramMain”
  3. 现在写一个这样的类:

      import com.example.TheProgramMain;
    
      public class MyClass {
          ...
          public void runIt() {
              String[] args = ...;
              TheProgramMain.main(args);
          }
      }
    
  4. (你可以自动化,即使用反射,但没有太多意义。)

    这很容易。硬位将拦截现有程序的输出,以便您可以对其进行后处理。你如何做到这将取决于现有程序的工作原理......

    请注意,如果您了解程序的内部设计,您可能会找到其他方法来“驱动”它;例如通过实例化类并调用公共实例方法来进行处理,而无需编写输出。