diff --git a/lua-test/lua/script/1/test1.lua b/lua-test/lua/script/1/test1.lua
index db1ceda..8a0a578 100644
--- a/lua-test/lua/script/1/test1.lua
+++ b/lua-test/lua/script/1/test1.lua
@@ -9,7 +9,7 @@ function errFunc(error)
end
function t1(str)
- print(str)
+ print(str, type(str))
local num = 99999999999999999
print(num)
print(1 << 2)
@@ -18,6 +18,7 @@ function t1(str)
--print(type(time) + num .. tostring(time))
--print(debug.traceback())
--print(str + num)
+ return str
end
--local success, error = pcall(t1, "d")
diff --git a/lua-test/lua/script/2/test2.lua b/lua-test/lua/script/2/test2.lua
index e29121b..08db739 100644
--- a/lua-test/lua/script/2/test2.lua
+++ b/lua-test/lua/script/2/test2.lua
@@ -27,7 +27,7 @@ function ret(obj)
return "dd - " .. obj
end)
if not success then
- local var = gameDebug.toStrings(obj, true)
+ local var = gameDebug.toStrings(", ", obj, true)
print(debug.traceback(var .. ret), 1)
end
return ret
diff --git a/lua-test/lua/util/gameDebug.lua b/lua-test/lua/util/gameDebug.lua
index 10f18b1..0475faa 100644
--- a/lua-test/lua/util/gameDebug.lua
+++ b/lua-test/lua/util/gameDebug.lua
@@ -3,6 +3,7 @@
--- @Created by wxd-gaming(無心道, 15388152619)
--- @DateTime: 2024/8/29 15:53
gameDebug = {}
+SystemError = load("return _G.error")()
--- 把 table 数据转化成json字符串
--- @param tab table数据类型
@@ -22,7 +23,7 @@ end
--- @param arr 数组数据类型
function gameDebug.toArrayJson(arr, appendYinhao, appendType)
local json = ""
- local success, error = pcall(function()
+ local success, result = pcall(function()
for i, v in ipairs(arr) do
if not (json == nil or json == "") then
json = json .. ", "
@@ -31,7 +32,7 @@ function gameDebug.toArrayJson(arr, appendYinhao, appendType)
end
end)
if not success then
- --print("gameDebug.toArrayJson error: " .. error)
+ --print("gameDebug.toArrayJson error: " .. result)
if (json == nil or json == "") then
if type(arr) == "userdata" then
-- 这里可能是luaj的数组
@@ -55,18 +56,18 @@ end
--- 把对象转化成字符串
--- @param ... 参数
-function gameDebug.toStrings(...)
+function gameDebug.toStrings(split, ...)
local printString = ""
local tmp = { ... }
- local success, error = pcall(function()
+ local _, _ = pcall(function()
for i, v in pairs(tmp) do
if not (printString == nil or printString == "") then
- printString = printString .. ", "
+ printString = printString .. split
end
- printString = printString .. gameDebug.toString(v, true, false)
+ printString = printString .. gameDebug.toString(v, false, false)
end
end)
- return "【" .. printString .. "】"
+ return printString
end
--- 把对象转化成字符串
@@ -138,7 +139,7 @@ end
function gameDebug.print0(traceback, appendYinhao, appendType, ...)
local printString = ""
local tmp = { ... }
- local success, error = pcall(function()
+ local success, result = pcall(function()
for i, v in pairs(tmp) do
if not (printString == nil or printString == "") then
printString = printString .. ",\n"
@@ -148,7 +149,7 @@ function gameDebug.print0(traceback, appendYinhao, appendType, ...)
end)
printString = "===================参数======================\n" .. "[\n" .. printString .. "\n]"
if traceback then
- printString = printString .. "\n===================堆栈=======================\n" .. debug.traceback(error)
+ printString = printString .. "\n===================堆栈=======================\n" .. debug.traceback(result)
end
printString = printString .. "\n===================结束=======================\n"
print(printString)
@@ -168,7 +169,7 @@ function gameDebug.debugType(fun, ...)
end
function gameDebug.debug0(fun, appendYinhao, appendType, ...)
- local f_success, f_error = pcall(fun)
+ local f_success, f_error = pcall(fun, ...)
if not f_success then
local printString = ""
local tmp = { ... }
@@ -212,21 +213,12 @@ end
--- 带堆栈抛出异常
function gameDebug.error(...)
- local var = gameDebug.toStrings(...)
- error(debug.traceback(var), 1)
-end
-
-function debugT3()
- gameDebug.assertEquals(1, 1, "id异常")
- gameDebug.assertEquals(1, 2, "id异常")
- gameDebug.assertTrue(1 == 1, "对象 nil")
- gameDebug.assertTrue(1 == 2, "对象 nil")
- gameDebug.assertNil(nil, "对象 nil")
- gameDebug.assertNil("11", "对象 nil")
+ local var = gameDebug.toStrings(" ", ...)
+ SystemError(debug.traceback(var), 1)
end
--- 测试函数
-function gameDebugT2(key, vs, list)
+function gamedebugt2(key, vs, list)
gameDebug.print("key = ", key, "vs = ", vs, "list = ", list)
gameDebug.printType("key = ", key, "vs = ", vs, "list = ", list)
gameDebug.printTraceback("key = ", key, "vs = ", vs, "list = ", list)
@@ -249,4 +241,39 @@ function gameDebugT2(key, vs, list)
print(type(key), key, keyString, keyNumber)
return list
+end
+
+function debugt3(...)
+ --gameDebug.assertEquals(1, 1, "id异常")
+ --gameDebug.assertEquals(1, 2, "id异常")
+ --gameDebug.assertTrue(1 == 1, "对象 nil")
+ --gameDebug.assertTrue(1 == 2, "对象 nil")
+ --gameDebug.assertNil(nil, "对象 nil")
+ --gameDebug.assertNil("11", "对象 nil")
+ test3(...)
+end
+
+function test3()
+ local tab = {}
+ tab[1] = "dd"
+ print(1 .. tab)
+end
+
+--function error(...)
+-- gameDebug.error(...)
+--end
+
+function dispatch(function_name, ...)
+ gameDebug.print(function_name, ...)
+ --查找函数 通过load字符串的形式 动态编译 返回函数
+ local loadFunc = load("return " .. function_name)()
+ --调用函数
+ local success, result = xpcall(loadFunc, debug.traceback, ...)
+ if not success then
+ --local trace = debug.traceback(result)
+ local var = "[Error] dispatch func name [" .. function_name .. "] 参数:" .. gameDebug.toStrings(" ", ...)
+ var = var .. "\n" .. result
+ SystemError(var)
+ end
+ return result
end
\ No newline at end of file
diff --git a/lua-test/lua51/pom.xml b/lua-test/lua51/pom.xml
index 9276c18..42dd159 100644
--- a/lua-test/lua51/pom.xml
+++ b/lua-test/lua51/pom.xml
@@ -15,17 +15,17 @@
party.iroiro.luajava
luajava
- 4.0.1
+ 4.0.2
party.iroiro.luajava
lua51
- 4.0.1
+ 4.0.2
party.iroiro.luajava
lua51-platform
- 4.0.1
+ 4.0.2
natives-desktop
runtime
diff --git a/lua-test/lua54/pom.xml b/lua-test/lua54/pom.xml
index e96f168..4d06b07 100644
--- a/lua-test/lua54/pom.xml
+++ b/lua-test/lua54/pom.xml
@@ -15,17 +15,17 @@
party.iroiro.luajava
luajava
- 4.0.1
+ 4.0.2
party.iroiro.luajava
lua54
- 4.0.1
+ 4.0.2
party.iroiro.luajava
lua54-platform
- 4.0.1
+ 4.0.2
natives-desktop
diff --git a/lua-test/lua54/src/main/java/test/Lua54Main.java b/lua-test/lua54/src/main/java/test/Lua54Main.java
index 8dd5e92..604f0a0 100644
--- a/lua-test/lua54/src/main/java/test/Lua54Main.java
+++ b/lua-test/lua54/src/main/java/test/Lua54Main.java
@@ -12,9 +12,22 @@ public class Lua54Main {
public static void main(String[] args) throws Exception {
LuaEventBus luaEventBus = LuaEventBus.buildFromDirs("lua");
+ // luaEventBus.getLuaRuntimeMap().values()
+ // .forEach(luaRuntime -> {
+ // LuaContext context = luaRuntime.context();
+ // context.getL().run("local num = 99999999999999999\n" +
+ // " print(num)");
+ // });
long start = System.currentTimeMillis();
- luaEventBus.pcall("testNow", new JSONObject().fluentPut("now", start).fluentPut("nowsec", (int) (start / 1000)));
- luaEventBus.pcall("debugT3");
+ // luaEventBus.pcall("debugt3", new JSONObject().fluentPut("now", start).fluentPut("nowsec", (int) (start / 1000)));
+ Object pcall = luaEventBus.contextModule("1")
+ .context()
+ .pcall(
+ "dispatch",
+ "debugt3",
+ 1
+ );
+ // System.out.println(pcall);
}
public static void test(LuaContext context) {
diff --git a/lua-test/lua54/src/main/java/test/LuaContext.java b/lua-test/lua54/src/main/java/test/LuaContext.java
index 20e8393..ba490bb 100644
--- a/lua-test/lua54/src/main/java/test/LuaContext.java
+++ b/lua-test/lua54/src/main/java/test/LuaContext.java
@@ -161,7 +161,9 @@ public class LuaContext implements Closeable {
LuaValue returnValue = call[0];
return LuaUtils.luaValue2Object(returnValue);
} catch (Throwable e) {
- throw new RuntimeException(e.getMessage(), e);
+ RuntimeException runtimeException = new RuntimeException(e.getMessage());
+ runtimeException.setStackTrace(e.getStackTrace());
+ throw runtimeException;
} finally {
L.setTop(oldTop);
}
diff --git a/lua-test/luajit/pom.xml b/lua-test/luajit/pom.xml
index 0d81c9d..a4f5615 100644
--- a/lua-test/luajit/pom.xml
+++ b/lua-test/luajit/pom.xml
@@ -15,18 +15,18 @@
party.iroiro.luajava
luajava
- 4.0.1
+ 4.0.2
party.iroiro.luajava
luajit
- 4.0.1
+ 4.0.2
party.iroiro.luajava
luajit-platform
- 4.0.1
+ 4.0.2
natives-desktop
runtime
diff --git a/lua-test/luajit/src/main/java/test/LuajitMain.java b/lua-test/luajit/src/main/java/test/LuajitMain.java
index 5992534..3a460e8 100644
--- a/lua-test/luajit/src/main/java/test/LuajitMain.java
+++ b/lua-test/luajit/src/main/java/test/LuajitMain.java
@@ -17,7 +17,7 @@ public class LuajitMain {
lua.openLibraries();
long timeMillis = System.currentTimeMillis();
- lua.run("local num = 99999999999999999\n" +
+ lua.run("local num = 99999999999999999LL\n" +
" print(num)");
lua.run("local i=" + timeMillis + "\n" +
"print(type(i) ..\" - \".. i)");
@@ -26,14 +26,14 @@ public class LuajitMain {
String file = "luajit/src/main/lua/test.lua";
String string = new String(Files.readAllBytes(Paths.get(file)), StandardCharsets.UTF_8);
/*TODO 可以直接运行文件 */
- lua.run(string);
+ // lua.run(string);
/*TODO 加载后是找不到内容的*/
// byte[] bytes = string.getBytes(StandardCharsets.UTF_8);
// ByteBuffer byteBuffer = ByteBuffer.allocateDirect(bytes.length);
// byteBuffer.put(bytes);
// lua.load(byteBuffer, "test");
- System.out.println(Arrays.toString(lua.eval("t2()")));
- System.out.println(lua.toInteger(1));
+ // System.out.println(Arrays.toString(lua.eval("t2()")));
+ // System.out.println(lua.toInteger(1));
// System.out.println(lua.get("t2()"));
}
}
\ No newline at end of file