問題タブ [javap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - プログラム可能な方法で javap
プログラム可能な方法で、独自の Java コードで javap を使用できますか?
たとえば、次のコード:
コマンドラインで javap を使用すると、次のようになりました。
javap の API を使用して定数プールのみを印刷できますか?
java - javap を使用しようとすると、「エラー: クラスが見つかりません」というメッセージが表示されます
クラスのバイトコードを表示しようとしていますが、.class
ファイルが存在するにもかかわらずクラスが見つかりません。Main.java
CLIからファイルをうまくコンパイルできますが、javap -c Main
それを使用するとクラスが見つかりません。
java - java:StringBuilderに変換されたバイトコードの文字列連結
コンパイルしたコードをjavacコマンドラインで確認し、+演算子を使用して文字列連結を使用するたびに、コンパイルしたコードがStringBuilderのappend()メソッドに置き換えられていることを確認しました。StringBuilderとString連結を使用すると、バイトコードが類似しているため、パフォーマンスは同じだと思いますが、正しいですか?
java - JDK クラス メソッドの時間計算量測定
JDK クラス メソッドの複雑さを測定する (または既存の測定値を取得する) 確立された方法はありますか? javap
時間の複雑さとその程度を表します。Arrays.sort()
特に、コレクションの操作方法の複雑さに興味があります。
たとえば、2 つの実装のパフォーマンスを比較しようとしています。1 つは使用しており、もう 1 つは使用Arrays.sort()
していません。そのjavap
逆アセンブルは、より多くのステップ (2 倍) を返しませんが、逆アセンブリがArrays.sort()
ステップを除外するかどうかはわかりません。IOW、javap
あるメソッドには、そのメソッド内またはそのメソッドのために呼び出されたメソッドの再帰的測定が含まれていますか?
また、Javaコード自体を変更して再コンパイルせずに、特定の基本Javaメソッドが特定のパラメータで呼び出されたときに実行されたループ反復の回数を見つける方法はありますか? たとえば、Arrays.sort('A', 'r', 'T', 'f')
?の反復回数を測定します。
java - javap とジェネリックの型消去
Java のジェネリックスでの型消去について Herbert Schilds を読んでいます。おそらく、クラスで javap を実行すると、タイプ消去後のパブリック、パッケージ保護、および保護されたフィールドとメソッドに関するバイトコード情報が得られるはずです。ただし、次のクラスを作成しました。
生成されたクラスファイルでjavapを実行し、次の出力を得ました
「Test.java」からコンパイル
私が読んだ内容に基づいて、このような出力を期待していました。
ここで何か不足していますか?上記の方法でメソッドをオーバーロードすることは良い習慣ではないことを理解していることを付け加えておきます。このあいまいさの下で javap の結果を見ることに興味を持っていました。
編集:これは、javap の新しい修正の結果のようです。 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4870651
JDK 1.6 から javap を実行すると、期待どおりの結果が得られます。最初に使用していたJDK 1.7 b30からjavapを実行すると、一般的な情報で結果が得られます。
android - javap を使用して Android アクティビティのメソッド シグネチャを取得する
コマンド ラインjavap -s java.awt.Label
で を記述すると、署名を取得することに成功しましたLabel
。Android Activity クラスの署名を取得したいと考えています。しかし、私が書くjavap -s android.app.activity
と、結果はERROR: Could not find android.app.activity
.
私は何を間違っていますか?PATH env varなどで何かを変更する必要がありますか?
java - クラスファイルが与えられた場合、JNIを使用しているかどうかを検出する方法は?
クラス ファイルのみの Java ベンチマークがいくつかあります。
どのベンチマークに JNI 呼び出しがあるかを知りたいです。
の助けを借りてバイトコードレベルからこれを行うことができるのではないかと思いましたが、よくわかりjavap -c
ません。
何か案は?
java - java.io.File の jar はどこにありますか?
のメソッド シグネチャを取得する必要がある場合はandroid.content.ContextWrapper
、
「C:\Program Files (x86)\Android\android-sdk\platforms\android-18」にandroid.jarを配置して実行
javap -s -classpath android.jar android.content.ContextWrapper > out.txt
ここで、 のメソッド シグネチャを取得する必要がありますjava.io.File
。対応する .jar の名前はどのようになっていますか?