我有一个名为 MyJar.jar 的 jar,其中包含 MyFinder.class 。该类包含一个名为 myFind() 的非静态函数。我想从 shell 脚本调用 myFind()。
我已经知道如何使用 jar 文件中的静态 main() 调用特定类:
java -jar MyJar.jar MyFinder.class
我需要一些像上面这样的命令来调用非静态函数
主要动机:
我有一个脚本文件,但只有一个 jar。 在脚本中,我想根据特定时间进行函数调用。我可以在 jar 本身内部对其进行编码。但如果以后需求发生变化,我就必须编辑 jar。我不希望发生这种情况,我只想编辑脚本文件
最佳答案
做到这一点的唯一方法是在类中包含一个 main 方法,该方法调用所需的方法:
public static void main(String[] args) {
MyFinder myFinder = new MyFinder();
myFinder.myFind();
}
编辑:实际上,这不是唯一的方法,但确实是唯一实用的方法..
编辑2: 如果您有多个方法要调用,请向该方法传递一个参数:
public static void main(String[] args) {
MyFinder myFinder = new MyFinder();
if (args.length > 0) {
switch (args[0]) {
case "myFind":
myFinder.myFind();
break;
case "methodB":
myFinder.methodB();
break;
default:
System.err.println("Unkown target");
break;
}
}
}
这样调用:java -jar MyJar.jar MyFinder.class myFind
关于java - 从脚本文件调用 jar 文件内的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36125729/