[英]How to call a Java Class with parameters that is in another Jar, multiple times in Parallel
我在RAD中有一个项目。 包是inputFileEdit,我需要的java类是InputFileTest.java。
package inputFileEdit;
public class InputFileTest {
public static void main(String[] args) {
String var1 = args[0];
String var2 = args[1].toLowerCase();
// do stuff with args
}
}
我想创建一个新的程序包/ java程序,该程序可以并行调用或实例化带有参数的上述InputFileTest类。 我基本上将要带回一个String列表,遍历该列表以创建并行线程,列表中的每一行都调用InputFileTest。
问题1)调用InputFileTest的最佳方法是什么? 我正在使用RAD,并且创建了一个新项目,一个名为CallerPackage的程序包以及该程序包中的Caller.java? 我还通过Java Build Path-> Libraries-> Add External Jars在/ lib下包括整个InputFileEdit项目的“ Jar”。 我不知道如何用参数调用类(我尝试过类似InputFileEdit ifeObj = new InputFileEdit("parm 1", "parm 2");
或InputFileEdit ifeObj = new InputFileEdit("parm 1 parm 2");
)但是两者都没有起作用,于是我尝试像Process p = Runtime.getRuntime().exec("java -jar /lib/InputFileEdit.jar parm1 parm2");
一样调用jar Process p = Runtime.getRuntime().exec("java -jar /lib/InputFileEdit.jar parm1 parm2");
或因为我想要实际的类InputFileTest,所以Process p = Runtime.getRuntime().exec(new String[]{"java","-cp","/lib/InputFileEdit.jar", "InputFileTest", "parm1","parm1"});
:
package CallerPackage;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
//import inputFileEdit.*;
public class Caller {
static int i = 0;
public static void main(String args[]) throws IOException, InterruptedException {
try {
System.out.println("Calling jar");
Process p = Runtime.getRuntime().exec("java -jar /lib/InputFileEdit.jar parm1 parm2");
BufferedInputStream errStrm = new BufferedInputStream(p.getErrorStream());
// get the error stream of the process and print it
for (int i = 0; i < errStrm.available(); i++) {
System.out.println("" + errStrm.read());
}
System.out.println("Called jar");
p.destroy();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
但这似乎也不起作用或打印出任何有用的内容。 有什么最好的解决方案的想法吗? 在遍历列表并并行调用它们之前,我只想暂时让1个电话上班。 最终它将通过字符串arraylist调用jar / class循环。
您应该能够像调用其他任何静态方法一样调用InputFileTest
的main方法: InputFileTest.main(args);
但是,一般直接调用main是不满意的。 如果可以的话,我建议您使用InputFileTest主程序中的代码,并将其放入另一个更具描述性的方法中,例如processFiles
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.