【问题标题】:How to call JAVA class methods using shell script? [duplicate]如何使用 shell 脚本调用 JAVA 类方法? [复制]
【发布时间】:2017-09-12 10:43:40
【问题描述】:

我一直在研究解决方案。需要使用 shell 脚本命令调用用 JAVA 程序编写的方法。有没有办法调用非main 方法。

我正在使用 .sh 文件来(启动和停止)程序。无论如何,我可以编写一个脚本来调用非“主要”方法。

【问题讨论】:

标签: java java-6


【解决方案1】:

shell脚本只能调用main方法。

例子是:

class Test
{
    public static void main(String []arg)
    {
        String input = arg[0];
        if ("start".equals(input))
            //call start method
        else if ("stop".equals(input))
            //call stop method
        else
            //define default behaviour
    }
}

壳牌

java -cp /path/class Test start

这将调用 Test 类的 main 方法并将 start 作为参数传递。

-cp 表示java 类文件的路径。 假设环境中已经设置了java的路径。

编辑:不能直接调用非主方法,而是可以将参数传递给主方法并根据输入(使用if-else)调用方法来启动或停止

【讨论】:

  • 有没有办法调用非主方法?
  • 不是直接的,但一种解决方法是从 main 调用该方法。
【解决方案2】:

如果你想从 shell 调用一个方法,它绝对是你的应用程序的入口点。只需编写一个带有 main 方法的类,该类调用所需的方法,构建您的 jar 并将其作为常规 java 应用程序执行。

【讨论】:

    【解决方案3】:

    鉴于以下 MyFirstJavaProgram.java

    public class MyFirstJavaProgram {
    
       /* This is my first java program.
        * This will print 'Hello World' as the output
        */
    
       public static void main(String []args) {
          System.out.println("Hello World"); // prints Hello World
       }
    }
    

    并且在您的计算机上正确安装了Java,您可以执行以下操作

    C:\> javac MyFirstJavaProgram.java
    C:\> java MyFirstJavaProgram 
    Hello World
    

    【讨论】:

      【解决方案4】:

      有几种选择:

      • 一个简单的方法是:您以某种方式“修复”要调用的方法。比如:你的主类解析一个数字参数,然后你用它来“查找”从表中调用的方法,例如
      • 您可以使用 reflection 实现单个 main() 方法,该方法从命令行读取方法的名称(甚至是封闭类的名称),然后“按名称”执行
      • 你可以避免反射,基本上有 一个 main() 方法 per 你想调用的“其他方法”(当然这意味着你最终会得到很多类 - 每个类都有一个 main() 里面
      • 您可以查看 jython:此工具允许您在特定 JVM 实例内部运行 python 解释器。

      jython 解决方案可能更有效 - 但如果您尝试解决“现实世界”问题,这应该是您的首选。

      【讨论】:

      • 鉴于问题所展示的编程技能水平,这些建议是不切实际的。
      • 那个编辑更加平衡,所以我删除了反对票。
      • 感谢您的快速回归。有什么提示可以完全扭转您的决定并让您朝着支持的方向前进吗? ;-)
      • 我认为@Batty 的答案非常适合该用户,因此请避免重复,或许可以扩展您的替代方案,以便为稍微缺乏经验的人提供更多指导。例如。带有一些简短的示例测试/运行工具。一个基于您的类工厂示例的简单示例可能是非常直接且灵活的下一步,并且足够了。
      猜你喜欢
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      相关资源
      最近更新 更多