java jsr关键字是什么意思?
我正在看一些Java代码,我注意到以下几点:
if (!foo(bar, baz, qux)) {
i = 0; jsr 433;
}
javac扼住了它,说它不是一个语句,在关键字jsr
后面应该有一个分号
我在谷歌上搜索了一下,发现了some code containing the same thing,这让我相信它是故意存在的(尽管他们也无法让它编译)。那么jsr
做什么呢?如何让包含它的代码进行编译
你可以在下面搜索框中键入要查询的问题!
我正在看一些Java代码,我注意到以下几点:
if (!foo(bar, baz, qux)) {
i = 0; jsr 433;
}
javac扼住了它,说它不是一个语句,在关键字jsr
后面应该有一个分号
我在谷歌上搜索了一下,发现了some code containing the same thing,这让我相信它是故意存在的(尽管他们也无法让它编译)。那么jsr
做什么呢?如何让包含它的代码进行编译
# 1 楼答案
JSR
(代表跳转子例程)是Java虚拟机规范的一部分。它是JVM的指令集简述
这可以在JVM book 2nd edition上找到
# 2 楼答案
JSR代表Java规范请求
这段代码可能有输入错误,应该是
在我看来,似乎有人出于某种原因进行了一次非工作签入
但是,看看这段代码,它看起来非常人工,所以它可能是反编译代码,正如Andreas_D所说的
小更新:检查底部注释:
从这里,我想说,有人制作了一个经过模糊处理的签名jar文件,不管是谁发布了该代码,都对其进行了反编译
更新2:谷歌搜索“JD核心”会产生http://java.decompiler.free.fr/作为第一个结果
# 3 楼答案
您最有可能看到的是反编译程序无法处理的某些代码的反编译结果。JSR是跳转子程序字节码的助记符;有关列表,请参见this page。因此
jsr 432
可能意味着在字节码地址432
调用私有方法。但是,反编译器无法理解这一点,因此可能该方法是合成的,或者正在进行其他操作编辑
您发现的谷歌示例肯定是反编译器的输出,看起来JSR部分要么是由于混淆、字节码修改/生成,要么是由于反编译器的填充
# 4 楼答案
我几乎可以肯定这段代码来自Java反编译器
JSR 432
闻起来像是一个反编译器注释,反编译器发现了一个“跳转”代码,但没有关于如何用java语言表达它的线索# 5 楼答案
jsr 433
不是有效的Java语句。这是一条VM指令,代表“跳转到子程序”(有关更多信息,请参阅VM Spec)。反编译器之所以插入它,是因为它不理解字节码指令(可能是混淆的),因此无法将其反编译为有效的Java源代码# 6 楼答案
它不在list of Java keywords中。所以我不相信它有任何意义。我怀疑是否有可能编译它