java中使用腳本語言(java編寫腳本常用的命令)

本文目錄一覽:

雲南java培訓學校告訴你腳本語言在軟件開發中有什麼作用?

腳本語言是我們經常在程序開發過程中使用的文檔。在軟件開發中,腳本語言是非常關鍵的。那麼在編寫腳本過程中需要了解和掌握哪些方法和技巧。下面雲南電腦培訓為大家介紹腳本語言在軟件開發中的作用。

1、檢查所有命令的可用性

腳本語言通常調用其他腳本或二進制文件。調用可能不存在的命令時,請檢查它們是否可用。雲南IT培訓建議可以使用“命令-v二進制名稱”來執行此操作,以查看其退出代碼是否為零。

2、獨立於當前工作目錄

如果從不同的目錄運行腳本,可能會發生錯誤。此腳本中,誰都不喜歡。要解決這種問題,最好使用絕對路徑和腳本的相對路徑進行工作。

3、如何讀取輸入

使用腳本可以有兩種方法進行輸入:環境變量和選項標籤。一般情況下,昆明IT培訓建議可以在不影響腳本行為的情況下使用環境變量,對於能夠接觸腳本的不同進程的值,可以使用腳本參數。

4、用動畫的方式顯示進度

部分命令需要長時間執行,並非所有腳本都顯示進度條。用戶等待非同步任務完成時,可以通過幾種方法通知腳本正在執行。

5、用顏色編碼輸出

當調用腳本中的其他二進制文件或腳本時,對它們的輸出進行顏色編碼,以便您能夠知道哪個輸出來自哪個腳本或二進制文件。所以昆明電腦培訓認為這樣我們就不需要在全屏黑白輸出文本中找到所需的輸出。

北大青鳥java培訓:腳本語言在軟件開發中有什麼作用?

腳本語言是我們經常在程序開發過程中使用的文檔。

在軟件開發中,腳本語言是非常關鍵的。

那麼在編寫腳本過程中需要了解和掌握哪些方法和技巧。

下面江西電腦培訓為大家介紹腳本語言在軟件開發中的作用。

1、檢查所有命令的可用性腳本語言通常調用其他腳本或二進制文件。

調用可能不存在的命令時,請檢查它們是否可用。

江西IT培訓建議可以使用“命令-v二進制名稱”來執行此操作,以查看其退出代碼是否為零。

2、獨立於當前工作目錄如果從不同的目錄運行腳本,可能會發生錯誤。

此腳本中,誰都不喜歡。

要解決這種問題,最好使用絕對路徑和腳本的相對路徑進行工作。

3、如何讀取輸入使用腳本可以有兩種方法進行輸入:環境變量和選項標籤。

一般情況下,江西IT培訓建議可以在不影響腳本行為的情況下使用環境變量,對於能夠接觸腳本的不同進程的值,可以使用腳本參數。

4、用動畫的方式顯示進度部分命令需要長時間執行,並非所有腳本都顯示進度條。

用戶等待非同步任務完成時,可以通過幾種方法通知腳本正在執行。

5、用顏色編碼輸出當調用腳本中的其他二進制文件或腳本時,對它們的輸出進行顏色編碼,以便您能夠知道哪個輸出來自哪個腳本或二進制文件。

所以江西電腦培訓認為這樣我們就不需要在全屏黑白輸出文本中找到所需的輸出。

如何在Java中使用Lua腳本語言

LuaJava實際上就是按照Lua官方文檔, 把Lua的C接口通過JNI包裝成Java的庫. 下載, 裡面是一個.dll, 一個.jar. 把.dll放到java.library.path 下, 再把.lib放到classpath 中, helloworld運行OK.

但是, 測試的時候, 很快發現了第一個問題: 在調用LuaJava中提供的LuaState.pushInteger 方法的時候, 出現了錯誤 : Unsatisfied Link Error . 其他的LuaState.pushNumber 方法倒是沒有問題. 用Depends工具看了下, 這個.dll居然沒有導出pushInteger 這個函數。

(1).下載LuaJava的源代碼, 查看了下Luajava.c 和 Luajava.h, 發現果然裡面有點問題, 在.h裡面定義了JNI中對應Java函數的C函數

JNIEXPORT void JNICALL Java_org_keplerproject_luajava_LuaState__1pushInteger 

但是.c中沒有實現這個函數. 無語, 看來大馬虎哪都有啊. 幸虧有源代碼, 照貓畫虎在Luajava.c中加上這個函數的實現,

(2).然後編譯. 編譯也出現了問題了, 官方文檔中說可以用VC++來Build, 但是沒有說官方用的是什麼版本. 我用VC2005就不行. 好在Luajava比較小, 就一個.h 一個 .c , 在VC中新建一個.dll項目, 把文件加進去, 修改一下build參數 (Include 需要加上lua的頭文件, lib中需要加上lua的.lib文件, 另外要選上 Compile as C Code (/TC) ) Build, 通過了.

這時再在Java中調用pushInteger方法就沒有問題了.

在測試中, 發現Luajava提供的文檔中, 對於Lua腳本怎麼調用Java對象/方法很詳細, 但是在Java中怎麼調用Lua函數/取得返回值 就沒有. 參考了 的Lua C文檔, 實現了傳遞對象到Lua中並取得返回值的代碼:

Test1: 測試傳遞簡單類型, 並取得返回值:

Lua 腳本(test.lua):

function test(a,b)

return a+b

end 

Java代碼:

static {

//加載Lua5.1.dll, 因為LuaJava最後還是要調用Lua的東西

System.loadLibrary(“lua5.1”);

}

public static void main(String[] argu) throws LuaException {

LuaState L = LuaStateFactory.newLuaState();

L.openLibs();

//讀入Lua腳本

int error = L.LdoFile(“test.lua”);

if (error != 0) {

System.out.println(“Read/Parse lua file error. Exit.”);

return;

}

//找到函數test

L.getField(LuaState.LUA_GLOBALSINDEX, “test”);

//參數1壓棧

L.pushInteger(1);

//參數2壓棧

L.pushInteger(2);

//調用!! 一共兩個參數, 1個返回值

L.call(2, 1);

//保存返回值, 到a中

L.setField(LuaState.LUA_GLOBALSINDEX, “a”);

//讀入a

LuaObject l = L.getLuaObject(“a”);

//打印結果.

System.out.println(“Result is ” + l.getString());

L.close();

}

測試2: 傳遞Java對象

class Value {

public int i;

public void inc() {

i++;

}

public int get() {

return i;

}

public String toString() {

return “Value is ” + i;

}

}

Lua腳本: (該腳本中調用兩次對象的inc方法, 並調用get方法輸出結果)

function test1(v)

v:inc();

v:inc();

print(“In lua: ” .. v:get());

return v

end 

Java 代碼: (前面都一樣, 略)

//找到函數est1

L.getField(LuaState.LUA_GLOBALSINDEX, “test1”);

//生成新的對象供測試

Value v = new Value();

//對象壓棧

L.pushObjectValue(v);

//調用函數test1, 此時1個參數, 1個返回值

L.call(1, 1);

//結果放在b中.

L.setField(LuaState.LUA_GLOBALSINDEX, “b”);

LuaObject l = L.getLuaObject(“b”);

System.out.println(“Result is ” + l.getObject());

總結:運行結果:

Result is Value is 2

In lua: 2 

和預期的一致.

北大青鳥java培訓:java編程開發語言編輯腳本應該怎麼做?

腳本對於大多數程序員來說應該不陌生了吧。

今天我們就一起來了解一下,在使用java編程開發語言編寫API腳本的時候都需要注意哪些問題。

Java腳本化API為誰準備?腳本語言的一些有用的特性是:方便:大多數腳本語言都是動態類型的。

您通常可以創建新的變量,而不聲明變量類型,並且您可以重用變量來存儲不同類型的對象。

此外,腳本語言往往會自動執行許多類型的轉換,例如,必要時將數字10轉換為“10”。

開發快速原型:您可以避免編輯編譯運行周期,只使用“編輯運行”!應用擴展/定製:你可以“具體化”的部分應用程序,例如一些配置腳本,業務邏輯/規則和財務應用中的數學表達式。

為應用添加命令行模式,用於調試、運行時配置/部署時間。

現在大多數應用程序都有一個基於Web的GUI配置工具。

但是系統管理員/部署人員常常喜歡命令行工具。

一個“標準”的腳本語言可以用來實現這個目的,而不是發明特設的腳本語言。

Java腳本API是一種獨立於框架的腳本語言,使用來自於Java代碼的腳本引擎。

通過java腳本API,可以使用Java語言編寫定製/可擴展的應用程序並將自定義腳本語言選擇留給終用戶。

Java應用程序開發者不需要在開發過程中選擇擴展語言。

如果你使用JSR-223API來編寫應用,那麼你的用戶可以使用任何JSR-223兼容的腳本語言。

腳本包Java腳本功能是在javax.script包中。

這是一個比較小的,簡單的API。

腳本的出發點是ScriptEngineManager類。

一個ScriptEngineManager對象可以通過jar文件的服務發現機制發現腳本引擎。

它也可以實例化腳本引擎來解釋使用特定的腳本語言編寫的腳本。

腳本變量當你的java應用程序嵌入腳本引擎和腳本,你可能希望將您的應用程序對象為全局變量暴露於腳本中。

這個例子演示了如何將您的應用程序對象作為全局變量暴露於腳本中。

我們在應用程序中創建一個java.io.File對象作為全局變量,名稱是file。

江蘇電腦培訓發現該腳本可以訪問變量,例如,它可以調用它的公共方法。

注意訪問java對象、領域和方法的語法依賴於腳本語言。

JavaScript支持“自然”的類似java的語法。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/239327.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:16
下一篇 2024-12-12 12:16

相關推薦

  • Python腳本控制其他軟件

    Python作為一種簡單易學、功能強大的腳本語言,具有廣泛的應用領域,在自動化測試、Web開發、數據挖掘等領域都得到了廣泛的應用。其中,Python腳本控制其他軟件也是Python…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Shell腳本與Python腳本的區別

    本文將從多個方面對Shell腳本與Python腳本的區別做詳細的闡述。 一、語法差異 Shell腳本和Python腳本的語法存在明顯差異。 Shell腳本是一種基於字符命令行的語言…

    編程 2025-04-29
  • Git config命令用法介紹:用正確的郵箱保障開發工作

    本文將詳細介紹如何使用git config命令配置Git的全局和本地用戶信息,特別是如何正確使用用戶郵箱,保障Git操作的正常進行。 一、git config命令介紹 Git中的每…

    編程 2025-04-29
  • Python命令大全及說明

    Python是一種高級編程語言,由Guido van Rossum於1989年底發明。它具有良好的語法結構和面向對象的編程思想,具有簡潔、易讀、易學的特點,是初學者以及專業開發人員…

    編程 2025-04-29
  • Python SSH 遠程執行命令

    Python SSH 遠程執行命令是指在一個服務器上執行遠程另一個服務器上命令。如果你需要在本地機器上執行命令,或者在遠程機器上執行本地命令,你都可以使用 SSH。在 Python…

    編程 2025-04-29
  • Python序列的常用操作

    Python序列是程序中的重要工具,在數據分析、機器學習、圖像處理等很多領域都有廣泛的應用。Python序列分為三種:列表(list)、元組(tuple)和字符串(string)。…

    編程 2025-04-28
  • Python自動化運維腳本

    Python自動化運維腳本是使用Python編寫的代碼,可以幫助管理員自動化執行繁瑣、重複的操作任務。通過Python自動化運維腳本,管理員可以在更短的時間內完成工作,提高工作效率…

    編程 2025-04-28
  • 使用Python圖書館搶座腳本的完整步驟

    本文將從多個方面詳細介紹如何使用Python編寫圖書館的座位搶佔腳本,並幫助您快速了解如何自動搶佔圖書館的座位,並實現您的學習計劃。 一、開發環境搭建 首先,我們需要安裝Pytho…

    編程 2025-04-28
  • 剖析命令執行函數

    在編程開發過程中,命令執行函數是非常常見的一個概念。它是指接受一個命令字符串,並將其解析執行,返回相應的結果或錯誤信息的函數。本文將從多個方面對命令執行函數進行詳細的闡述,包括其定…

    編程 2025-04-28

發表回復

登錄後才能評論