https://github.com/yasuenag/jlivepatcher
Live patch for Java
https://github.com/yasuenag/jlivepatcher
java jvmti jvmti-agents livepatch
Last synced: 2 months ago
JSON representation
Live patch for Java
- Host: GitHub
- URL: https://github.com/yasuenag/jlivepatcher
- Owner: YaSuenag
- License: lgpl-3.0
- Created: 2014-05-09T15:37:36.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2023-01-11T13:09:27.000Z (over 2 years ago)
- Last Synced: 2024-06-11T16:17:28.729Z (about 1 year ago)
- Topics: java, jvmti, jvmti-agents, livepatch
- Language: Java
- Homepage:
- Size: 21.5 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
JLivePatcher

===================JLivePatcher は、特定クラスのみを java 起動時、または既存プロセスに対して差し替える JVMTI java エージェントです。これにより、アプリケーションだけでなくフレームワーク等のパッチ作業でバイナリ全体を入れ替える必要がなくなります。
## ライセンス ##
The GNU Lesser General Public License, version 3.0
## 動作環境 ##
Java SE 6 以降
(動作確認は OpenJDK8 @ Fedora23 x64で行っています。## コンパイル ##
添付の build.xml を使って ant でビルドしてください (all ターゲット)。## 使用方法 ##
1. 差し替えるクラスファイルを用意してください。
2. Java のプロパティファイル形式で、Key にクラス名(FQCN)、Value に新しいクラスファイルを記述してください。(test ディレクトリの retransform.properties を参考にしてください。)
* 起動時差し替えの場合
* java起動オプションに ```-javaagent:jlivepatcher.jar=<プロパティファイル>``` を追記します。
* 既存プロセスに対する差し替えは、以下3つのいずれかの方法で可能です。### 1. AttachAPI
自分で [Attach API](http://docs.oracle.com/javase/jp/6/technotes/guides/attach/index.html) を用いたプログラムを書いてアタッチします。JLivePatcher でも [AttacherMain.java](src/com/yasuenag/jlivepatcher/AttacherMain.java) で利用しています。
### 2. ランチャスクリプトの使用
`dist/jliveattacher` を使用し、以下のように起動します。
```shell
$ jlivepatcher <プロパティファイル>
```### 3. jcmd ※Java 9以降
`jcmd` の `JVMTI.agent_load` サブコマンドを使用します。
```shell
$ jcmd /path/to/jlivepatcher.jar <プロパティファイル(フルパス)>
```