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

## org.luaj.vm2.lib
Class PackageLib

    java.lang.Object
      org.luaj.vm2.Varargs
          org.luaj.vm2.LuaValue
              org.luaj.vm2.LuaFunction
                  org.luaj.vm2.lib.LibFunction
                      org.luaj.vm2.lib.TwoArgFunction
                          org.luaj.vm2.lib.PackageLib

    public class PackageLib

extends TwoArgFunction

Subclass of `LibFunction` which implements the lua standard package and module library functions.

### Lua Environment Variables

The following variables are available to lua scrips when this library has been loaded:

- `"package.loaded"` Lua table of loaded modules.
- `"package.path"` Search path for lua scripts.
- `"package.preload"` Lua table of uninitialized preload functions.
- `"package.searchers"` Lua table of functions that search for object to load.

### Java Environment Variables

These Java environment variables affect the library behavior:

- `"luaj.package.path"` Initial value for `"package.path"`. Default value is `"?.lua"`

### Loading

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

     Globals globals = JsePlatform.standardGlobals();
     System.out.println( globals.get("require").call"foo") );

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

     Globals globals = new Globals();
     globals.load(new JseBaseLib());
     globals.load(new PackageLib());
     System.out.println( globals.get("require").call("foo") );

### Limitations

This library has been implemented to match as closely as possible the behavior in the corresponding library in C. However, the default filesystem search semantics are different and delegated to the bas library as outlined in the `BaseLib` and `JseBaseLib` documentation.

See Also:
  `LibFunction`, `BaseLib`, `JseBaseLib`, `JsePlatform`, `JmePlatform`, Lua 5.2 Package Lib Reference

Nested Class Summary
`class` `PackageLib.java_searcher`
`static class` `PackageLib.loadlib`
`class` `PackageLib.lua_searcher`
`class` `PackageLib.preload_searcher`
`class` `PackageLib.require` require (modname) Loads the given module.
`class` `PackageLib.searchpath`

Field Summary
`static java.lang.String` `DEFAULT_LUA_PATH` The default value to use for package.path.
`PackageLib.java_searcher` `java_searcher` Loader that loads as a Java class.
`PackageLib.lua_searcher` `lua_searcher` Loader that loads as a lua script using the lua path currently in `PackageLib.searchpath`
`PackageLib.preload_searcher` `preload_searcher` Loader that loads from `preload` table if found there

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
`PackageLib()`

Method Summary
`LuaValue` `call(LuaValue modname, LuaValue env)` Perform one-time initialization on the library by adding package functions to the supplied environment, and returning it as the return value.
`void` `setIsLoaded(java.lang.String name, LuaTable value)` Allow packages to mark themselves as loaded
`void` `setLuaPath(java.lang.String newLuaPath)` Set the lua path used by this library instance to a new value.
`static java.lang.String` `toClassname(java.lang.String filename)` Convert lua filename to valid class name
`java.lang.String` `tojstring()` Convert to human readable String for any type.

Methods inherited from class org.luaj.vm2.lib.TwoArgFunction
`call, call, call, invoke`

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

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, onInvoke, 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`

Field Detail

### DEFAULT_LUA_PATH

    public static java.lang.String DEFAULT_LUA_PATH

  The default value to use for package.path. This can be set with the system property `"luaj.package.path"`, and is `"?.lua"` by default.

### preload_searcher

    public PackageLib.preload_searcher preload_searcher

  Loader that loads from `preload` table if found there

### lua_searcher

    public PackageLib.lua_searcher lua_searcher

  Loader that loads as a lua script using the lua path currently in `PackageLib.searchpath`

### java_searcher

    public PackageLib.java_searcher java_searcher

  Loader that loads as a Java class. Class must have public constructor and be a LuaValue.

Constructor Detail

### PackageLib

    public PackageLib()

Method Detail

### call

    public LuaValue call(LuaValue modname,
                         LuaValue env)

  Perform one-time initialization on the library by adding package functions to the supplied environment, and returning it as the return value. It also creates the package.preload and package.loaded tables for use by other libraries.

  Specified by:
    `call` in class `TwoArgFunction`
  Parameters:
    `modname` - the module name supplied if this is loaded via 'require'.
    `env` - the environment to load into, typically a Globals instance.
  Returns:
    First return value `(this(arg1,arg2))`, or `LuaValue.NIL` if there were none.
  See Also:
    `LuaValue.call()`, `LuaValue.call(LuaValue)`, `LuaValue.call(LuaValue, LuaValue, LuaValue)`, `LuaValue.invoke(LuaValue, Varargs)`, `LuaValue.method(String,LuaValue,LuaValue)`, `LuaValue.method(LuaValue,LuaValue,LuaValue)`

### setIsLoaded

    public void setIsLoaded(java.lang.String name,
                            LuaTable value)

  Allow packages to mark themselves as loaded

### setLuaPath

    public void setLuaPath(java.lang.String newLuaPath)

  Set the lua path used by this library instance to a new value. Merely sets the value of `PackageLib.searchpath` to be used in subsequent searches.

### tojstring

    public java.lang.String tojstring()

  Description copied from class: `LuaValue`
  Convert to human readable String for any type.

  Overrides:
    `tojstring` in class `LibFunction`
  Returns:
    String for use by human readers based on type.
  See Also:
    `LuaValue.tostring()`, `LuaValue.optjstring(String)`, `LuaValue.checkjstring()`, `LuaValue.isstring()`, `LuaValue.TSTRING`

### toClassname

    public static final java.lang.String toClassname(java.lang.String filename)

  Convert lua filename to valid class name

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