为什么将class源文件反编译回来会报错,包存在。

wangmohan44 2011-10-17 10:42:23
在将class源文件反编译回来变成java文件后,与原来的java文件不一致,修改了一些变量名,而且有一些for循环中的“{”、“}”也没有了,如果想反编译后的java文件和原java文件一致该怎么办,现在反编译用的工具是jd-gui,xjad都有这个问题。如果是工具问题希望提供下载地址,或发到我邮箱529109762@qq.com。谢谢
...全文
525 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangmohan44 2011-10-18
  • 打赏
  • 举报
回复
啥小动作哦,有些工作需要而已
xiaozhuangfeng 2011-10-18
  • 打赏
  • 举报
回复
一般不会需要反编译的吧,莫非lz想干点啥小动作
wangjiangbo2 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wangmohan44 的回复:]
2楼难道有办法,求教
[/Quote]
没搞过,以前的单位碰到这类问题,都是由总工把翻译完的程序补齐,难易程度不了解。
有时间可以自己试试
wangmohan44 2011-10-18
  • 打赏
  • 举报
回复
2楼难道有办法,求教
wangmohan44 2011-10-18
  • 打赏
  • 举报
回复
难道没一点办法吗?我想既然能够编译成class文件,那肯定有class与java编译的一定规则的,能编过来应该也可以能编译回去,我是这样觉得的啊,求解决
wangjiangbo2 2011-10-18
  • 打赏
  • 举报
回复
想要还原成java原文件,好像不简单呐。
wangmohan44 2011-10-18
  • 打赏
  • 举报
回复
那如果按照你所说,变量名会被该掉,那应该是所有的都存在这个问题吧,但是在反编译后,只有个别类中的变量存在这个问题,而有些类却是没有报错的,而且编译后还会添加一些莫名其妙的"单词",这又是怎么回事呢?求完整点的解释或解决方案
疯癫行者 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wangmohan44 的回复:]

难道没一点办法吗?我想既然能够编译成class文件,那肯定有class与java编译的一定规则的,能编过来应该也可以能编译回去,我是这样觉得的啊,求解决
[/Quote]
看来你还是不死心,说说原因给你:
源文件是给人看的,所以源文件里面变量有名字,而且易读,类文件是给计算机看的,他没有必要保留变量名,所以编译的时候丢掉了。所以反编译的时候,到哪儿去找变量名呢?
至于括号,右括号和没有括号只是两种不同的代码风格,这不是编译器本身的问题,如果你非要改成你自己的样子,那你可以找编辑器工具帮你完成。
疯癫行者 2011-10-17
  • 打赏
  • 举报
回复
好像不行,反编译器怎么能知道原来是什么格式呢?怎么能知道原来代码定义的变量名是什么呢?我觉得楼主不要想这个问题了,几乎是不可能的,因为类文件并不保持java文件的全部格式的。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧