
Javaのバイトコード操作をかんたんにやりたいと思っています
バイトコード操作はimport書き換えのために使いたいです。
ASMやJavassistを見てみましたが僕の想像するバイトコード操作ではなかったので自分で作ろうかと思いました
そこでInputStreamからbyte配列にclassファイルの中身を読み込まさせ、Stringに変換後置き換えなどを行い、再度getBytes()でbyteを取得して出力という方法を取りました。
ですができたclassファイルをリフレクションを使用して実行させようとすると
java.lang.ClassFormatError: Unknown constant tag 119 in class file クラス名
というエラーが出ます。
Stringを経由させるのが行けないのだと思ったのですが、byte[]にreplace関数がないのでどうしたらbyteの置き換えが行なえますか?
String.replaceと同じような感じで置き換えがしたいです。
Java
1InputStream stream = zip.getInputStream(entry); 2byte[] b = new byte[(int) entry.getSize()]; 3stream.read(b); 4String a = new String(b,"ISO-8859-1"); 5a = a.replace("cpw/mods/fml/common/network/NetworkMod", "versionsmod/src/cpw/mods/fml/common/network/NetworkMod"); 6zipout.putNextEntry(new ZipEntry(entry.getName())); 7zipout.write(a.getBytes("ISO-8859-1")); 8zipout.closeEntry();
entry・・・ZipEntry
zipout・・・ZipOutputStream


回答1件
あなたの回答
tips
プレビュー