2014-08-29 29 views
2

Inline文檔對學習如何使用STUDY配置沒有太大幫助,任何人都可以澄清調用打印方法(比如Hello())的簡單無效方法時涉及的語法嗎?Inline :: java STUDY配置

另外,就外部java文件而言,是否有一個特定的目錄需要放入,還是放在perl腳本的同一目錄中?

+1

這是一個很窄的主題(使用Inline :: Java將Java代碼包含在Perl腳本中),恐怕在看到答案之前可能需要一段時間。您可能有更好的運氣訂閱並張貼[email protected]。有關詳細信息,請參閱http://lists.perl.org。 – DavidO 2014-08-29 23:25:41

回答

2

讓我們先從文件/home/foo/java_src/Hello.java,其中包含:

public class Hello { 
    public Hello() {} 
    public void instance_hello() { System.out.println("hello world"); } 
    public static void static_hello() { System.out.println("HELLO WORLD"); } 
} 

第一應對你的第二個問題,use Inline Java ...後的第一個參數可以是文件名,所以你可以在任何地方把你的源文件,並引用它通過其在perl代碼中的文件名:

use Inline Java => '/home/foo/java_src/Hello.java'; 
$obj = Hello->new(); 
$obj->instance_hello();  # "hello world" 
Hello->static_hello();  # "HELLO WORLD" 

請注意,您到目前爲止並不需要STUDYHello類是在Inline::Java模塊直接讀取的源代碼中定義的,因此該模塊將自動創建並填充Perl中的Hello名稱空間。

STUDY適用於不直接被Inline::Java解析的類。因此,讓我們說,我們的Hello類已被編譯爲jar文件,稱爲/home/foo/jars/hello.jar。現在使用Hello類,你將需要:(1)在您的CLASSPATH和(2)使用STUDYhello.jar告訴Inline::Java創建Hello命名空間:

use Inline Java => 'STUDY', 
    CLASSPATH => '/home/foo/jars/hello.jar', 
    STUDY => ['Hello']; 
$obj = Hello->new; 
Hello->static_hello;  # "HELLO WORLD" 
$obj->instance_hello; # "hello world" 

我們有第一個參數STUDY信號的Inline::Java我們沒有將任何源代碼直接傳遞給模塊。我們也可以通過有效的源代碼或有效的源代碼文件名。

use Inline Java => 'public class Nothing() { }', 
    CLASSPATH => '/home/foo/jars/hello.jar', 
    STUDY => ['Hello'];