2009-11-16 60 views
1

JDK具有jrunscript可執行文件。 JRE是否具有可執行的必需jar文件,以免需要完整的JDK使用jrunscript?我可以從JRE運行jrunscript

換句話說,我可以通過用類名調用java可執行文件來運行jrunscript。

+0

我希望如此。您知道有多少用戶在其計算機上下載了完整的JDK? – amischiefr 2009-11-16 18:13:57

回答

2

JRunscript可執行文件不過是JavaScript文件。 我不知道你是否可以直接使用只有jre安裝的命令行,但是,你可以使用簡單的javaclass並從命令行運行javaclass。

import java.io.FileReader; 

import javax.script.ScriptEngine; 
import javax.script.ScriptEngineManager; 

public class RunScriptFile { 
    public static void main(String[] args) { 
    ScriptEngineManager manager = new ScriptEngineManager(); 
    ScriptEngine engine = manager.getEngineByName("js"); 
    try { 
     FileReader reader = new FileReader(args[0]); 
     engine.eval(reader); 
     reader.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 
} 

編譯(必填JDK):

javac RunScriptFile.java. 
You'll get "RunScriptFile.class" 

要運行(需要JRE):

java RunScriptFile <myawesomescript.js> 

希望這有助於。

+0

等一下...我以爲你需要在你的classpath中使用一個犀牛罐子。你是否說Java包含Javascript引擎? – Stroboskop 2009-11-16 18:47:15

+0

Rhino至少包含在Java 6開始的JDK中。我的基本問題是它是否包含在JRE中。顯然情況就是這樣。 – 2009-11-16 19:12:32

+0

這確實可以讓我執行我的js。不幸的是,我正在使用jrunscript的一些內置命令,如mv和exec。 – 2009-11-16 19:37:47

-1

JRE包含了運行java程序所需的一切,包括任何標準庫jar文件。

JDK包含編寫Java程序所需的工具和庫。所以只要你不小心導入實現類(例如com.sum.*中的東西),那麼你的java程序應該運行在任何正確版本的JRE上。

+0

你的答案沒有提到Javascript ... – 2009-11-16 18:46:28

2

jrunscript駐留在com.sun.tools.script.shell.Main裏面tools.jar在我的JDK上。

該文件顯然不是與JRE

捆綁正如有人已經提到的Java代碼少量可以用來啓動您的腳本:

new ScriptEngineManager().getEngineByName("js").eval(jsCode) 

特殊jrunscript功能,如ls (),mv(),echo()和read()不在JRE中。

這些函數實際上是在init腳本[see init.js from the openjdk repo]中定義的JavaScript函數。該腳本在您的代碼之前由jrunscript自動加載。

您可以在腳本中複製這些函數。請記住,openjdk是根據GPL授權的。

相關問題