java - 从脚本文件调用 jar 文件内的函数

标签 java bash function class jar

我有一个名为 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/

相关文章:

java - 如何从 REST Web 服务读取规范

java - 如何将 X 天数添加到当前日期并将格式设置为 UTC

java - 我如何为 Websphere MQ 创建自定义 channel 以及如何使用 Java 客户端程序进行配置

bash - Grep --byte-offset 不返回偏移量(Grep 版本 2.5.1)

java - 查询数据库以确保新用户不会使用已有的用户名进行注册

git - OpenShift : Unable to log in using rhc on Windows 7

node.js - 为什么它返回未定义?

php - 如何将 PHP 变量从一个函数传递到另一个函数?

javascript - 为什么我只得到 2 和 3 为假? (如果数字是素数则返回真)

linux - 文件到字符串和字符串到 bash 中的文件