{"id":27255488,"url":"https://github.com/yasuenag/jlivepatcher","last_synced_at":"2025-06-30T19:06:45.862Z","repository":{"id":16856099,"uuid":"19616102","full_name":"YaSuenag/jlivepatcher","owner":"YaSuenag","description":"Live patch for Java","archived":false,"fork":false,"pushed_at":"2023-01-11T13:09:27.000Z","size":22,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-11T16:17:28.729Z","etag":null,"topics":["java","jvmti","jvmti-agents","livepatch"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YaSuenag.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}},"created_at":"2014-05-09T15:37:36.000Z","updated_at":"2024-02-13T11:40:04.000Z","dependencies_parsed_at":"2023-01-13T19:03:31.578Z","dependency_job_id":null,"html_url":"https://github.com/YaSuenag/jlivepatcher","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaSuenag%2Fjlivepatcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaSuenag%2Fjlivepatcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaSuenag%2Fjlivepatcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaSuenag%2Fjlivepatcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YaSuenag","download_url":"https://codeload.github.com/YaSuenag/jlivepatcher/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248328283,"owners_count":21085286,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["java","jvmti","jvmti-agents","livepatch"],"created_at":"2025-04-11T02:19:51.049Z","updated_at":"2025-04-11T02:19:52.013Z","avatar_url":"https://github.com/YaSuenag.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"JLivePatcher\n![CodeQL](../../workflows/CodeQL/badge.svg)\n===================\n\nJLivePatcher は、特定クラスのみを java 起動時、または既存プロセスに対して差し替える JVMTI java エージェントです。これにより、アプリケーションだけでなくフレームワーク等のパッチ作業でバイナリ全体を入れ替える必要がなくなります。\n\n## ライセンス ##\n\nThe GNU Lesser General Public License, version 3.0\n\n## 動作環境 ##\n Java SE 6 以降\n （動作確認は OpenJDK8 @ Fedora23 x64で行っています。\n\n## コンパイル ##\n 添付の build.xml を使って ant でビルドしてください (all ターゲット）。\n\n## 使用方法 ##\n\n1. 差し替えるクラスファイルを用意してください。\n2. Java のプロパティファイル形式で、Key にクラス名（FQCN）、Value に新しいクラスファイルを記述してください。（test ディレクトリの retransform.properties を参考にしてください。）\n  * 起動時差し替えの場合\n    * java起動オプションに ```-javaagent:jlivepatcher.jar=\u003cプロパティファイル\u003e``` を追記します。\n  * 既存プロセスに対する差し替えは、以下3つのいずれかの方法で可能です。\n\n### 1. AttachAPI\n\n自分で [Attach API](http://docs.oracle.com/javase/jp/6/technotes/guides/attach/index.html) を用いたプログラムを書いてアタッチします。JLivePatcher でも [AttacherMain.java](src/com/yasuenag/jlivepatcher/AttacherMain.java) で利用しています。\n\n### 2. ランチャスクリプトの使用\n\n`dist/jliveattacher` を使用し、以下のように起動します。\n\n```shell\n$ jlivepatcher \u003cPID\u003e \u003cプロパティファイル\u003e\n```\n\n### 3. jcmd ※Java 9以降\n\n`jcmd` の `JVMTI.agent_load` サブコマンドを使用します。\n\n```shell\n$ jcmd \u003cPID\u003e /path/to/jlivepatcher.jar \u003cプロパティファイル（フルパス）\u003e\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyasuenag%2Fjlivepatcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyasuenag%2Fjlivepatcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyasuenag%2Fjlivepatcher/lists"}