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