
рдореБрдЭреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдореБрдЭреЗ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рд▓реБрдЖ рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдмрд╣реБрдд рдХрдо рд╕рд╛рдордЧреНрд░реА рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛, рдЬрд╛рд╡рд╛ рд╕реЗ рд▓реБрдЖ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрди рд╕рднреА рдХреА рдЕрдкрдиреА рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВред рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛,
рд▓реБрд╡рд╛ рдЬрд╛рд╡рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд▓реБрдЖ рд▓рд┐рдЦрд╛ рдерд╛ред
LuaJava рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдореБрдЭреЗ рддреБрд░рдВрдд рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдирдкреИрдХ рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реЗ рдЖрдк рдЗрдХрдЯреНрдареЗ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдкрде рдХреЛ рднреА ClassPath рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рдПрдХ рдЬрд╛рд░-рдЖрд░реНрдХрд╛рдЗрд╡ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдПрдХ рдЬрд╛рд╡рд╛-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд╛рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЙрд╕ рдкрд░ рдФрд░ рдЕрдзрд┐рдХ рдиреАрдЪреЗред
рдореИрдиреБрдЕрд▓ рдкреЗрдЬ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЦреБрд╢ рд▓рд┐рдирдХреНрд╕ рдФрд░ рдУрдПрд╕рдПрдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдореЗрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЗрдХрдЯреНрдард╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ - рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╢реБрд░реВ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ
#############################################################
#Linux/BSD/Mac
LUA_DIR= /usr/local/share/lua/5.1.1
LUA_LIBDIR= /usr/local/lib
LUA_INCLUDES= /usr/local/include
JDK= $(JAVA_HOME)
# For Mac OS, comment the above line and uncomment this one
#JDK=/Library/Java/Home
# Full path to Lua static library
LIB_LUA=$(LUA_LIBDIR)/liblua.a
#Linux/BSD
LIB_EXT= .so
#Mac OS
#LIB_EXT= .jnilib
LIB_PREFIX= lib
#Linux/BSD
LIB_OPTION= -shared
#Mac OS
#LIB_OPTION= -dynamiclib -all_load
## On FreeBSD and Mac OS systems, the following line should be commented
DLLIB= -ldl
WARN= -O2 -Wall -fPIC -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings
INCS= -I$(JDK)/include -I$(JDK)/include/linux -I$(LUA_INCLUDES)
CFLAGS= $(WARN) $(INCS)
CC= gcc
#########################################################
VERSION= 1.1
PKG= luajava-$(VERSION)
TAR_FILE= $(PKG).tar.gz
ZIP_FILE= $(PKG).zip
JAR_FILE= $(PKG).jar
SO_FILE= $(LIB_PREFIX)$(PKG)$(LIB_EXT)
DIST_DIR= $(PKG)
# $Id: config,v 1.12 2006/12/22 14:06:40 thiago Exp $
рдпрджрд┐ рдЖрдк рддреБрд░рдВрдд рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рднреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ:
1. рдпрд╛ рддреЛ JAVA_HOME рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдмрдирд╛рдПрдВ, рдпрд╛ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ, рдЬрд┐рд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рд╡рд╛ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдЙрд╕ рдкрде рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдореИрдВрдиреЗ рдЗрд╕ рдЪрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛:
JAVA_HOME= /usr/lib/jvm/java-6-sun-1.6.0.26
2. рдпрд╣рд╛рдБ рд╕реЗ Lua рдмрд╛рдпрдиреЗрд░реА рдбрд╛рдЙрдирд▓реЛрдб
рдХрд░реЗрдВ ред рд╣рдореЗрдВ рд▓рд┐рдирдХреНрд╕ рд╕рдВрдЧреНрд░рд╣ ### _ lib.tar.gz рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдлрд╛рдЗрд▓ liblua5.1a рдФрд░ liblua5.1.so рдХреЛ / usr / рд╕реНрдерд╛рдиреАрдп / lib рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ / usr / рд╕реНрдерд╛рдиреАрдп / рд╢рд╛рдорд┐рд▓ рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрди рдХреЛ рдмрджрд▓реЗрдВ
LIB_LUA=$(LUA_LIBDIR)/liblua.a
рдкрд░
LIB_LUA=$(LUA_LIBDIR)/liblua5.1.a
3. рдЬреАрд╕реАрд╕реА рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣реА рд╣реИ, рдЕрдм рдЖрдк рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрдХ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, 2 рдлрд╛рдЗрд▓реЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ: рд▓реБрдЬрд╛рд╡-1.1.рдЬрд░ рдФрд░ рд▓рд┐рдмреНрд▓реВрд╡рд╛рдЬрд╡рд╛-1.1.soред рдореИрдиреБрдЕрд▓ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ .jar рдХреЛ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде lib / рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ .so рдлрд╝рд╛рдЗрд▓ рдпрд╛ рддреЛ JRE рдмрд┐рди / рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИ, рдпрд╛ рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╣рд╛рдВ LD_LIBRARY_PATH рдЪрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ JRE рдмрд┐рди / рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рд╣реИред
рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
рдПрдХ рдЬрд╛рд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдЖрдкрдХреЛ рдмрд╛рд╣рд░реА рд▓реБрдЬрд╡рд╛-1.1.рдЬрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП, рдЖрдкрдХреЛ VM рддрд░реНрдХреЛрдВ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
-Djava.library.path=[ , LuaJava]
рдЕрдм рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд▓реБрдЖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ org.keplerproject.luajava.LuaState рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рд╛ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдХреЛ рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣рд╛рдБ рдореИрдВ рдЬрд┐рд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдЙрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
import org.keplerproject.luajava.LuaObject; import org.keplerproject.luajava.LuaState; import org.keplerproject.luajava.LuaStateFactory; public class LuaScriptLoader { private LuaState luaState; public LuaScriptLoader(String fileFullName) { luaState = LuaStateFactory.newLuaState(); luaState.openLibs(); luaState.LdoFile(fileFullName); } public void closeScript() { luaState.close(); } public String getRoomDescription() { luaState.getGlobal("getRoomDescription"); luaState.call(0, 1); LuaObject lo = luaState.getLuaObject(1); luaState.pop(1); return lo.getString(); } public void runScriptFunction(String functionName, LuaAdapter adapter) { luaState.getGlobal(functionName); luaState.pushJavaObject(adapter); luaState.call(1, 0); } }
рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк .jar рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ 2 рдХрд╛рдо рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:
1. рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп, рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдХреНрд▓рд╛рд╕-рдкрд╛рде рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
Class-Path: [ , LuaJava]/luajava-1.1.jar
2. рдЖрдкрдХреЛ рдПрдХ рд╣реА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде .jar рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реАрдПрдо рдХреЗ рддрд░реНрдХреЛрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ
-Djava.library.path=[ , LuaJava]
LuaState рд╡рд░реНрдЧ рдХреА рдХреЙрд▓ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, 2 рдкреВрд░реНрдгрд╛рдВрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд▓реМрдЯреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред GetRoomDescription () рд╡рд┐рдзрд┐ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди (0 рддрд░реНрдХ, 1 рд░рд┐рдЯрд░реНрди рдорд╛рди) рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдФрд░ рд░рдирд╕реНрдХреНрд░рд┐рдкреНрдЯрдлрд╝рдВрдХреНрд╢рди () рд╡рд┐рдзрд┐ рдореЗрдВ, рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдП (1 рддрд░реНрдХ, 0 рдорд╛рди рдорд╛рди)ред LuaAdapter рд╡рд░реНрдЧ рдореЗрд░реА рдХрдХреНрд╖рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВред рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╣реИ:
function getRoomDescription() return "" end function processMessage(adapter) local message = adapter:getMessage() local user = adapter:getUser() local nick = user:getNick() adapter:sendMessageToRoomAndUser(user, nick..": "..message, "") end function userEnter(adapter) local user = adapter:getUser() local nick = user:getNick() adapter:sendMessageToRoomAndUser(user, " "..nick, " ") end function userLeft(adapter) local nick = adapter:getUser():getNick() adapter:sendMessageToRoom(" "..nick.." ") end
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд▓реБрдЖ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдХ рд╕рдореНрдореЗрд▓рди рдХрдХреНрд╖ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪреИрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЗ рдЬреЛ LuaAdapter рд╡рд░реНрдЧ рдореЗрдВ рд╣реИрдВ, рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХреЙрд▓ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
UPD: рдПрдХ рдФрд░ рдмрд╛рдд рднреВрд▓ рдЧрдПред рдЖрдк рд▓рд╛рд╡рд╛ рд╕реЗ рдЬрд╛рд╡рд╛ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рди рдХреЗрд╡рд▓ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИ (рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реБрдП)ред LuaJava
рдореИрдиреБрдЕрд▓ рдХрдИ рдФрд░ рддрд░реАрдХреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рджреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдмрд╛рдХреА рдиреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреАред рдореИрдВ рдкрд╣рд▓реЗ рджреЛ рддрд░реАрдХреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛:
1. LuaJava рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ newInstance (className, ...) рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рдХрд╛ рдкреВрд░рд╛ рдирд╛рдо рд╣реИ, рдмрд╛рдХреА рдирд┐рд░реНрдорд╛рдг рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдирдпрд╛ рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
obj = luajava.newInstance("java.lang.Object")
рдЖрдк рдЙрдирдХреЗ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЙрдирдХреЗ рдирд╛рдо рдХреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "myproject.mypackage.MyClass")ред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдРрд╕реА рдмрд╛рд░реАрдХрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдирд╣реАрдВ рдорд┐рд▓реА рд╣реИрдВ:
- рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓реБрдЖ рд▓рд┐рдкрд┐ рдХреА рдХрд┐рд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред рдореБрдЭреЗ рд╢рдХ рд╣реИ рдХрд┐ рд╕рднреА рдХреЗ рд▓рд┐рдП
- рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рддрдХ рдкрд╣реБрдБрдЪ рд╣реИ, рдпрд╛ рд▓реБрдЖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрди рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рд╕реЗрд╕ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА
2. LuaJava рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ bindClass (className) рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рдХреЗ рд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
sys = luajava.bindClass("java.lang.System") print ( sys:currentTimeMillis() )
рдЖрдк рдЕрдкрдиреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ (рд╕рдорд╛рди рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде) рднреА рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдЗрди рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛, рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдХрдХреНрд╖рд╛рдПрдВ рдПрдХреНрд╕реЗрд╕ рдХреАрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реБрдИ
UPD рд╡рд╣рд╛рдБ рдПрдХ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рдерд╛ред рдХреЙрд▓ рд╡рд┐рдзрд┐ рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдпрджрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИ, рддреЛ рдкреВрд░рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред Iksepshenov рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдкрд░рд┐рддреНрдпрд╛рдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЧреБрдЧреНрд▓рдб рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЙрд▓ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдереНрд░реЗрдб рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдмрджрд╕реВрд░рдд рд╣реИред рд▓реЗрдХрд┐рди LuaState рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдкреАрд╕реАрдПрд▓ рд╡рд┐рдзрд┐ рд╣реИ:
public int pcall(int nArgs, int nResults, int errFunc)
рдЬреЛ рдПрдХ рд╕рдлрд▓ рдХреЙрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╛рди 0 рд▓реМрдЯрд╛рдПрдЧрд╛, рдФрд░ рдЕрд╕рдлрд▓ рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЧреИрд░-рд╢реВрдиреНрдп рдорд╛рдиред рдкрд╣рд▓реЗ рджреЛ рддрд░реНрдХ рдХреЙрд▓ рд╡рд┐рдзрд┐ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ, рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рдВрднрд╡рддрдГ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рддреНрд░реБрдЯрд┐ рд╡рд┐рд╡рд░рдг рдХреЛ LuaState рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдм рдореЗрд░реА рд░рдирд╕реНрдХреНрд░рд┐рдкреНрдЯрдлрд╝рдВрдХреНрд╢рди рд╡рд┐рдзрд┐ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
public void runScriptFunction(String functionName, LuaAdapter adapter) { luaState.getGlobal(functionName); luaState.pushJavaObject(adapter); int res = luaState.pcall(1, 0, 0); if(res != 0) { Main.log(Level.SEVERE, "LuaScriptLoader call error: " + luaState.toString(-1)); } } }