如何使用shell脚本调用JAVA类方法?

时间:2017-09-12 10:43:40

标签: java java-6

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

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

4 个答案:

答案 0 :(得分:2)

只能从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的路径已经在环境中设置。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

给出以下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

答案 3 :(得分:0)

有几种选择:

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

jython解决方案可能需要更多工作 - 但如果您正在尝试解决“真实世界”问题,这应该是您的首选。