2012-02-23 126 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`