2012-02-23 292 views

回答

10

您只能调用main方法。设计您的main方法,使其调用所需的方法。

当我说调用main方法时,你不明确地调用它。这是调用Java程序时唯一的入口点。

如果你的类是这样的:

package com.foo; 

public class Test { 
    public static void main(String[] args) { 
     System.out.println("Hello World!"); 
    } 
} 

可以使用下面的命令行来调用从目录中main在这里你可以找到com/foo/Test.class(如果你在所示结构classes目录是远低于):

java com.foo.Test 

如果你想从不同的做到这一点(见远低于目录结构)的目录,那么你就必须要设置classpath中。

java -cp /path/to/classes com.foo.Test 

为了清楚起见,假设下面的目录结构。

-path 
    -to 
     -classes 
      -com 
       -foo 
        >Test.class 
+0

哦,顺便说做任何你们知道一个整洁的在线服务,使我能迅速搭起目录结构(文本格式)像上面那样? – adarshr 2012-02-23 11:28:45

2

您不能直接从shell脚本执行任意方法,您需要以某种方式在外部暴露该方法。

最简单的方法当然是写一个main方法,直接调用你想测试的代码。

或者,您可以使用一个Java应用程序,该应用程序将参数用作某种启动程序。以最简单的形式,您可以想象一个应用程序,它将类名称和方法名称作为参数,然后实例化该类并通过反射调用该方法。以类似的方式,但更优雅一些,我们使用一个应用程序调用通过JMX公开的操作,以便在需要时触发服务器上的某些方法。

尽管如此,bash(或等价物)不能理解JVM字节码。你需要启动Java进程来运行该方法,这将涉及执行一些main方法,这反过来又调用你所需要的。

0

您可以使用shell脚本,并调用Java程序是这样的:

`#!/bin/bash 
JAVA_HOME=/usr/lib/jvm/jdk1.6.0_02 
CLASSPATH=/home/freddy/myapp/lib/whatever.jar: . 
$JAVA_HOME/bin/java -cp $CLASSPATH MyJavaClass 
exit 0`