{"id":51030969,"url":"https://github.com/sunwu51/swapper","last_synced_at":"2026-06-22T00:30:51.888Z","repository":{"id":210538912,"uuid":"723731181","full_name":"sunwu51/swapper","owner":"sunwu51","description":"jvm diagnose tool by swapping bytecode","archived":false,"fork":false,"pushed_at":"2026-06-19T07:02:05.000Z","size":42842,"stargazers_count":86,"open_issues_count":0,"forks_count":21,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-06-19T08:27:37.583Z","etag":null,"topics":["asm","attach","bytecode","debugging-tool","diagnose","hotswap","javassist","jvm"],"latest_commit_sha":null,"homepage":"https://www.bilibili.com/video/BV1TmWWeYEie","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sunwu51.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-11-26T15:44:38.000Z","updated_at":"2026-06-19T07:02:08.000Z","dependencies_parsed_at":"2024-04-03T16:29:18.896Z","dependency_job_id":"5ea6a9c6-7d7c-4a2c-b6a6-88d6b4e2815b","html_url":"https://github.com/sunwu51/swapper","commit_stats":null,"previous_names":["sunwu51/jvmbyteswaptool","sunwu51/swapper"],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/sunwu51/swapper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunwu51%2Fswapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunwu51%2Fswapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunwu51%2Fswapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunwu51%2Fswapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sunwu51","download_url":"https://codeload.github.com/sunwu51/swapper/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunwu51%2Fswapper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34630753,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asm","attach","bytecode","debugging-tool","diagnose","hotswap","javassist","jvm"],"created_at":"2026-06-22T00:30:51.706Z","updated_at":"2026-06-22T00:30:51.880Z","avatar_url":"https://github.com/sunwu51.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JVM ByteSwap Tool\n![logo](sw-ico.png)\n\n![actions](https://github.com/sunwu51/JVMByteSwapTool/actions/workflows/main.yml/badge.svg)\n\nA tool that can hot swap the class byte code while jvm is running. Very suitable for `SpringBoot framework`.\n\nBased on the jvm instrumentation tech, ASM, javassist and JVMTI.\n\n# Usage\nDownload `swapper.jar` from the [release](https://github.com/sunwu51/JVMByteSwapTool/releases) page.\n\nMake sure you have a JDK \u003e= 1.8.\n```bash\n$ java -jar swapper.jar\n\n// All of the java processes will be listed\n// Choose the pid you want to attach\n// Then the backend service will start\n```\n\nIf you want to change the HTTP server port or WebSocket port:\n```bash\n$ java -jar -Dw_http_port=9999 -Dw_ws_port=19999 swapper.jar\n```\n\n## Web UI\nAfter `swapper.jar` starts, visit `http://localhost:8000` and use the Web UI.\n\n![image](https://i.imgur.com/WSKkrxX.png)\n\n\nNow you can enjoy the functionalities of swapper tool.\n\nFor example, `Watch` some methods. Trigger this method, and then the params and return value and execution time cost will be printed. \n\n![image](https://i.imgur.com/RaEZ1w5.png)\n\nIt's `Watch` one of the functions provided by swapper tool.\n\nGet more functions and details from the [wiki](https://github.com/sunwu51/JVMByteSwapTool/wiki).\n\n## TUI CLI\nYou can use the TUI client in the same way as the Web UI.\n\nInstall it from npm:\n```bash\n$ npm i -g jbs-client\n$ jbs-client\n```\n\nOr download the standalone binary for your platform from the [jbs-client-opentui releases](https://github.com/sunwu51/jbs-client-opentui/releases), then run:\n```bash\n$ jbs-client\n```\n\nThe interaction flow is consistent with the Web UI.\n\n![img](https://i.imgur.com/5HTimiI.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunwu51%2Fswapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsunwu51%2Fswapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunwu51%2Fswapper/lists"}