# LuajavaLib (Luaj API)
Date: 2015-04-29

## org.luaj.vm2.lib.jse
Class LuajavaLib

    java.lang.Object
      org.luaj.vm2.Varargs
          org.luaj.vm2.LuaValue
              org.luaj.vm2.LuaFunction
                  org.luaj.vm2.lib.LibFunction
                      org.luaj.vm2.lib.VarArgFunction
                          org.luaj.vm2.lib.jse.LuajavaLib

    public class LuajavaLib

extends VarArgFunction

Subclass of `LibFunction` which implements the features of the luajava package.

Luajava is an approach to mixing lua and java using simple functions that bind java classes and methods to lua dynamically. The API is documented on the luajava documentation pages.

Typically, this library is included as part of a call to `JsePlatform.standardGlobals()`

     Globals globals = JsePlatform.standardGlobals();
     System.out.println( globals.get("luajava").get("bindClass").call( LuaValue.valueOf("java.lang.System") ).invokeMethod("currentTimeMillis") );

To instantiate and use it directly, link it into your globals table via `Globals.load(java.lang.String, java.lang.String)` using code such as:

     Globals globals = new Globals();
     globals.load(new JseBaseLib());
     globals.load(new PackageLib());
     globals.load(new LuajavaLib());
     globals.load(
          "sys = luajava.bindClass('java.lang.System')\n"+
          "print ( sys:currentTimeMillis() )\n", "main.lua" ).call();

The `luajava` library is available on all JSE platforms via the call to `JsePlatform.standardGlobals()` and the luajava api's are simply invoked from lua. Because it makes extensive use of Java's reflection API, it is not available on JME, but can be used in Android applications.

This has been implemented to match as closely as possible the behavior in the corresponding library in C.

See Also:
  `LibFunction`, `JsePlatform`, `JmePlatform`, `LuaC`, `CoerceJavaToLua`, `CoerceLuaToJava`, http://www.keplerproject.org/luajava/manual.html#luareference

Field Summary

Fields inherited from class org.luaj.vm2.lib.LibFunction
`name, opcode`

Fields inherited from class org.luaj.vm2.LuaFunction
`s_metatable`

Fields inherited from class org.luaj.vm2.LuaValue
`ADD, CALL, CONCAT, DIV, EMPTYSTRING, ENV, EQ, FALSE, INDEX, LE, LEN, LT, METATABLE, MINUSONE, MOD, MODE, MUL, NEWINDEX, NIL, NILS, NONE, NOVALS, ONE, POW, SUB, TBOOLEAN, TFUNCTION, TINT, TLIGHTUSERDATA, TNIL, TNONE, TNUMBER, TOSTRING, TRUE, TSTRING, TTABLE, TTHREAD, TUSERDATA, TVALUE, TYPE_NAMES, UNM, ZERO`

Constructor Summary
`LuajavaLib()`

Method Summary
`protected java.lang.Class` `classForName(java.lang.String name)`
`Varargs` `invoke(Varargs args)` Subclass responsibility.

Methods inherited from class org.luaj.vm2.lib.VarArgFunction
`call, call, call, call, onInvoke`

Methods inherited from class org.luaj.vm2.lib.LibFunction
`bind, bind, call, newupe, newupl, newupn, tojstring`

Methods inherited from class org.luaj.vm2.LuaFunction
`checkfunction, classnamestub, getmetatable, isfunction, name, optfunction, strvalue, type, typename`

Methods inherited from class org.luaj.vm2.LuaValue

`add, add, add, and, arg, arg1, argerror, argerror, aritherror, aritherror, arithmt, arithmtwith, assert_, buffer, call, callmt, checkboolean, checkclosure, checkdouble, checkglobals, checkint, checkinteger, checkjstring, checklong, checkmetatag, checknotnil, checknumber, checknumber, checkstring, checktable, checkthread, checkuserdata, checkuserdata, compareerror, compareerror, comparemt, concat, concat, concatmt, concatTo, concatTo, concatTo, div, div, div, divInto, eq_b, eq, eqmtcall, equals, error, get, get, get, gettable, gt_b, gt_b, gt_b, gt, gt, gt, gteq_b, gteq_b, gteq_b, gteq, gteq, gteq, illegal, inext, initupvalue1, invoke, invoke, invoke, invoke, invoke, invokemethod, invokemethod, invokemethod, invokemethod, invokemethod, invokemethod, isboolean, isclosure, isint, isinttype, islong, isnil, isnumber, isstring, istable, isthread, isuserdata, isuserdata, isvalidkey, len, lenerror, length, listOf, listOf, load, lt_b, lt_b, lt_b, lt, lt, lt, lteq_b, lteq_b, lteq_b, lteq, lteq, lteq, metatableOf, metatag, method, method, method, method, method, method, mod, mod, mod, modFrom, mul, mul, mul, narg, neg, neq_b, neq, next, not, optboolean, optclosure, optdouble, optint, optinteger, optjstring, optlong, optnumber, optstring, opttable, optthread, optuserdata, optuserdata, optvalue, or, pow, pow, pow, powWith, powWith, presize, raweq, raweq, raweq, raweq, raweq, rawget, rawget, rawget, rawlen, rawset, rawset, rawset, rawset, rawset, rawset, rawset, rawsetlist, set, set, set, set, set, set, set, setmetatable, settable, strcmp, strcmp, strongvalue, sub, sub, sub, subargs, subFrom, subFrom, tableOf, tableOf, tableOf, tableOf, tableOf, tableOf, tailcallOf, testfor_b, toboolean, tobyte, tochar, todouble, tofloat, toint, tolong, tonumber, toshort, tostring, toString, touserdata, touserdata, typerror, unimplemented, userdataOf, userdataOf, valueOf, valueOf, valueOf, valueOf, valueOf, valueOf, varargsOf, varargsOf, varargsOf, varargsOf, varargsOf, varargsOf`

Methods inherited from class org.luaj.vm2.Varargs

`argcheck, checkboolean, checkclosure, checkdouble, checkfunction, checkint, checkinteger, checkjstring, checklong, checknotnil, checknumber, checkstring, checktable, checkthread, checkuserdata, checkuserdata, checkvalue, eval, isfunction, isnil, isnoneornil, isnumber, isstring, istable, isTailcall, isthread, isuserdata, isvalue, optboolean, optclosure, optdouble, optfunction, optint, optinteger, optjstring, optlong, optnumber, optstring, opttable, optthread, optuserdata, optuserdata, optvalue, toboolean, tobyte, tochar, todouble, tofloat, toint, tojstring, tolong, toshort, touserdata, touserdata, type`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### LuajavaLib

    public LuajavaLib()

Method Detail

### invoke

    public Varargs invoke(Varargs args)

  Description copied from class: `VarArgFunction`
  Subclass responsibility. May not have expected behavior for tail calls. Should not be used if: - function has a possibility of returning a TailcallVarargs

  Overrides:
    `invoke` in class `VarArgFunction`
  Parameters:
    `args` - the arguments to the function call.
  Returns:
    All return values as a `Varargs` instance.
  See Also:
    `LuaValue.varargsOf(LuaValue[])`, `LuaValue.call(LuaValue)`, `LuaValue.invoke()`, `LuaValue.invoke(LuaValue,Varargs)`, `LuaValue.invokemethod(String,Varargs)`, `LuaValue.invokemethod(LuaValue,Varargs)`

### classForName

    protected java.lang.Class classForName(java.lang.String name)
                                    throws java.lang.ClassNotFoundException

  Throws:
    `java.lang.ClassNotFoundException`

Copyright © 2007-2015 Luaj.org. All Rights Reserved.