Java 在没有源代码的情况下更改.jar文件?

Java 在没有源代码的情况下更改.jar文件?,java,tcp,decompiling,Java,Tcp,Decompiling,我有一个基于Java的TCP客户端,它与我正在编写的生产服务器通信。客户端对服务器的IP和端口进行了硬编码。我想要做的是将客户端中的IP地址更改为127.0.0.1&我可以在我的dev box上使用相同的端口号。问题是,我没有所有的源代码,所以我不能重新编译它。编写它的人已经四年没有在这里工作了,虽然我有他的硬盘,但我还没有找到一个已编译的环回客户端(尽管我找到了它的部分源代码),甚至没有找到生产客户端的所有源代码。我怀疑他是在网络驱动器上写代码的,在这几年里,代码都丢失了 有什么方法可以让我对

我有一个基于Java的TCP客户端,它与我正在编写的生产服务器通信。客户端对服务器的IP和端口进行了硬编码。我想要做的是将客户端中的IP地址更改为127.0.0.1&我可以在我的dev box上使用相同的端口号。问题是,我没有所有的源代码,所以我不能重新编译它。编写它的人已经四年没有在这里工作了,虽然我有他的硬盘,但我还没有找到一个已编译的环回客户端(尽管我找到了它的部分源代码),甚至没有找到生产客户端的所有源代码。我怀疑他是在网络驱动器上写代码的,在这几年里,代码都丢失了

有什么方法可以让我对客户端进行反编译并使用更改重新编译吗?十六进制或二进制编辑(我在这两方面都没有技能,我只是看到它完成)?也许是WinRAR,因为我的理解是.jar文件只是压缩文件?或者,是否有某种方法可以捕获来自客户机的传出TCP流量,并将其重新路由到我的dev box?我无法关闭生产服务器进行测试,如果没有经过修改的客户端,就很难确保我模拟生产服务器对客户端的响应


我发现这篇文章是这样的:,但是我不理解反汇编和反编译之间的区别,但是我发现了JD在那里提到的实用程序。

您找到的java反编译器()将获取您拥有的编译过的jar文件并创建java源文件。然后,您必须编辑源文件以进行所需的更改并重新编译


我建议通过命令行配置主机和端口,以避免再次出现此问题。

将jar复制到您的工作站并解压缩。然后使用像jad这样的工具来反编译您正在查找的类并进行更改。您应该能够编译它,因为编译所需的JAR与运行客户机所需的JAR相同

感谢您的链接,我刚才正在搜索一个使用JDK 1.7的Java反编译器:)+1@hwatkins,效果非常好,我已经能够使用JAD对客户端进行反编译,进行更改&让它重新编译。我正在处理很多依赖项,但至少编译时会出错,这比我以前得到的要远得多。我在项目中的各种文件中都有大量的数据类型不匹配,我不知道为什么会这样,也许这只是我必须攀登的一条学习曲线。好消息是,我有大部分的源代码,它可以编译,希望现在它只是找出错误。谢谢@事实证明,hwatkins最初的客户端能够为IP地址使用命令行开关。在我用这些指令反编译之前,没有人知道这一点。因此,它不适用于环回地址(127.0.0.1),但适用于我的机箱的IP,因此我所要做的就是更改服务器上的端口(已经设计为使用配置交换机)。威廉沙特纳,很高兴知道我能帮助柯克船长。你如何重新编译jad文件?