‘壹’ 用java反编译器编译出来的语言一定是原来的正确源代码吗
void的返回值是空
可以没有返回值,程序里面的return;意思是从这里返回
也就是说程序执行到这一步时退出这个函数
比如说个面的这一程序:
public class Text
{
public static void main(String s[])
{
if( 2 > 1){
System.out.println("2确实大于1");
return ;
}
System.out.println("该句是不会执行的");
}
}
输出为:2确实大于1
程序执行到System.out.println("2确实大于1");return ;
的时候就退出了main函数,不会执行下面的任何语句了
‘贰’ java反编译后得到的源码 很混乱 怎么办
不是每个反编译都能完美的,用eclipse规范下代码,然后不符合的语法的方法,自己换成适合当前jdk版本支持的就可以了,反编译还是得花力气在代码的上,偷懒有限啊。
‘叁’ 反编译出来的java文件有错误,请问怎么改
这个反编译的程序 相当于自己写的程序的 你这样包装改就对了try{File log = new File(System.getProperty("server.root"), file); fw = new FileWriter(log, true); bw = new BufferedWriter(fw); pw = new PrintWriter(bw, true); }catch(IOException){}return;}
‘肆’ 为什么将class反编译为java后,java直接编译时有错误
midlet不存在? 如果你用的是Eclipse那你在配置环境时有问题 没关联EclipseMe 和关联WTK MIDletStateChangeException应该是有异常
反编译的软件一般都会使用如a b c之类的变量名 导致很多类的情况下容易重名导致变量混乱 最好改成自己习惯的变量名
至于环境变量的配置按这个来
右键点击我的电脑--->属性--->高级--->环境变量--->系统变量--->新建
path: C:\j2sdk1.4.2_05\bin
classpath: .;C:\j2sdk1.4.2_05\lib\dt.jar;C:\j2sdk1.4.2_05\lib\tools.jar 确定
改了还不行的话把代码贴出来看看 祝你走运~~~
‘伍’ java库反编译出来的代码跟源码差异大不大
有点大 只能作为参考 不能当做代码使用
‘陆’ java反编译出来逻辑不对,谁帮我整理下。
一般反编译出来的代码应该和源码的顺序是一样的把
‘柒’ Java反编译后得到的不是Java源代码。
估计你得到的是java虚拟机指令,因为.class文件与java源代码不是一一对应的,但与虚拟机指令却是一一对应的,就像exe文件中的机器指令与汇编指令是一一对应的,要看懂这些代码可以参考java虚拟机指令集
‘捌’ .class反编译为Java后运行不了,源代码如下
可以运行勒,你所谓的运行不了是什么意思?
控制台:
j=0
i=1j=1
‘玖’ 用JAVA反编译器,把.class文件反编译后会不会和原文件不同
如果是简单的JAVA代码或者没有经过混淆编译的代码就会使一样或者差不多的。
但是一下两种情况就特别不一样:
1.经过混淆编译的
2.使用内部类的
另外,所有的注释都是没有的。
当然还有其他的一些情况下你会发现不一样了,某些情况下循环的时候就会,而且变量申明的位置会改变等等。
‘拾’ 从java程序里反编译出来,一字未改再重新编译提示100多个错误
反编译的程序,不能保证100%的正确的,所以你再编译,很明显问题出来了。
有些地方应该还要手动修改一下。