问题标签 [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 工具在 jar 文件中打印类结构?
我想使用javap工具列出jar中类文件的方法。我该怎么做才能列出 jar 中所有类文件的方法和成员。现在我一次只能上一堂课。
如果我说,我期待这样的事情
它应该列出 java.lang 包中所有类的方法和成员。如果 javap 无法做到这一点,是否有任何此类工具可用?
java - 从网络获取运行时类信息?类似于 javap 但在运行时加载在内存中的类上
我正在处理 Websphere 和复杂的类加载问题。我希望能够下载或打印通常由 javap 打印的信息(方法等)。
我可能还需要获取原始二进制类数据,以执行二进制差异。
你会怎么做?
java - How do I alias the scala setter method 'myvar_$eq(myval)' to something more pleasing when in java?
I've been converting some code from java to scala lately trying to teach myself the language.
Suppose we have this scala class:
Now I want to access it from java so I can't use dot-notation like I would if I was in scala.
So I can get my var's contents by issuing:
and set it via:
This holds true cause our Person Class looks like this in javap:
Yes, I could write my own getters/setters but I hate filling classes up with that and it doesn't make a ton of sense considering I already have them -- I just want to alias the _$eq method better. (This actually gets worse when you are dealing with stuff like antlr because then you have to escape it and it ends up looking like person.name_\$eq("newname");
Note: I'd much rather have to put up with this rather than fill my classes with more setter methods.
So what would you do in this situation?
java - 是否有用于 java 的反汇编器 + 调试器(用于汇编器的 ala OllyDbg / SoftICE)?
是否有类似于 OllyDbg / SoftICE for java 的实用程序?即执行类(来自 jar / 带有类路径),并且在没有源代码的情况下显示中间代码的反汇编,能够单步执行/跳过/搜索引用/在内存中编辑特定的中间代码/将编辑应用于文件.. .
如果没有,是否甚至可以编写这样的东西(假设我们愿意在调试期间没有热点)?
编辑:我不是在谈论 JAD 或 JD 或 Cavaj。这些都是很好的反编译器,但我不想要反编译器有几个原因,最值得注意的是它们的输出不正确(充其量,有时只是完全错误)。我不是在寻找神奇的“Java 代码的编译字节”——我想查看即将执行的实际字节。另外,我希望能够更改这些字节(就像在程序集调试器中一样),并希望将更改的部分写回类文件。
Edit2:我知道 javap 存在 - 但它只做一种方式(并且没有任何类型的分析)。示例(取自 vmspec 文档的代码):从 java 代码中,我们使用“javac”来编译:
到 java .class 文件。使用 javap -c 我可以得到这个输出:
这对于反汇编部分来说是可以的(没有分析就不是很好 - “字段#4是Example.i”),但我找不到其他两个“工具”:
- 一个可以检查指令本身的调试器(带有堆栈、内存转储等),允许我检查实际的代码和环境。
- 一种逆转该过程的方法 - 编辑反汇编代码并重新创建 .class 文件(使用编辑后的代码)。
java - 如何从ant执行javap
我想从 ant 脚本运行 javap 命令。javap命令位于JDK下的bin文件夹中,但是如何在ant脚本中访问JDK路径呢?${java.home} 指向 JRE 而不是 JDK,所以这没有帮助。
我正在寻找一种不需要对系统进行任何配置(例如修改 PATH 或设置其他环境变量(如 JAVA_HOME))的解决方案。仅适用于 Windows 的解决方案很好。
java - DOS下的java命令
使用 javap java.lang.Object 我们可以看到它下面的方法签名,而使用 javap javax.servlet.ServletConfig 我们看不到它。
任何人都可以建议任何命令来检查 javax.servlet.ServletConfig 的方法签名
java - 为什么对于同一个 jar 文件,我的 javap 输出与您的不同?
我在编译对 jline-0.9.94 具有 maven 依赖性的代码时遇到问题。具体来说,我正在使用其默认 Ant 目标编译Groovy 1.7.6并收到以下错误:
jline 依赖项已正确解析,但奇怪的是,jar 中似乎没有 setDefaultPrompt 方法:
(javap 输出中也缺少其他方法,但 setDefaultPrompt 是破坏我构建的方法。)
我尝试从本地 maven 存储库中清除 jline 并再次尝试,但无济于事。我还检查了来自Maven Central的 jline jarfile以及具有相同结果的镜像。
奇怪的是,我可以将 jar 文件复制到另一台机器(Sun)并执行完全相同的步骤,并且我可以按预期在 jar 文件中看到 setDefaultPrompt 方法。其他人也成功地在 Mac 上执行了相同的步骤。
我的机器上会发生什么会阻止 Java 工具链查看 jar 文件中包含的方法?
java - “javap”中的“p”代表什么?
“javap”中的“p”代表什么?(“javac”中的“c”代表编译器)
java - 了解常量池的 javap 输出
在一个非常简单的 HelloWorld 应用程序上运行 javap 时,我对常量池周围的输出有些困惑。
测试代码
Javap -c -verbose 输出(截断)
好的,所以在第 3 行,我们看到通过 #22 将“hello world”常量推入堆栈,但 const #23 似乎保留了实际值。我想我对 #(number) 出现在打印输出右侧的含义有些困惑。
Oracle/Sun 的 javap 手册页还有很多不足之处。
java - 用 java 1.5 和 1.5.0_06 编译的类之间有区别吗
我已经用 java 1.5 版编译了一个类。
当我将它部署在服务器中时,它给了我错误的版本错误。
如果我使用 java 版本 1.5.0_06 编译它,如果服务器具有版本 1.5.0_06 的 java,那会有所不同
1.版本中的最后一个数字也有区别吗?
2. 给了我次要和主要版本,但如何知道类是用哪个更新编译的?javap -verbose ClassName
谢谢,桑迪普