2011-10-05 42 views
4

我最近丢失了当时正在处理的项目的netbeans项目文件夹。然而,在我工作的公司的某个服务器上,我部署了它。这意味着我(希望)仍然可以获得.war文件。从.war文件取回我的java源代码?

是否有可能'解压缩'这个.war文件并获取我当时正在处理的.java源文件?

在此先感谢!

+8

...源代码管理... – JRL

+0

解压WAR文件很简单 - 它只是一个具有特定布局的Zip文件。在Mac或Linux上,您可以在文件上调用“unzip”。不幸的是,这并没有为你带来源文件,只是编译后的.class文件,所以你需要一个反编译器才能够读取java代码,并且它不会与原始源代码相同。 –

+3

你的意思是版本控制?地狱是的,这是我在职业生涯初期学到的宝贵经验。 – Tiwaz89

回答

2

你只从你的战争中获得* .class文件(将战争重命名为zip并使用解压工具)。

然后你可以反编译它们。

看到这个related question for some suggestions

9

如果.java源文件不在WAR中(而且它们不应该是),那么您必须采取额外的步骤来使用JAD等工具反编译它们。

这是设置版本控制系统的好时机,如Subversion或Git或Mercurial,所以这再也不会发生在您身上。养成使用源代码管理的习惯,即使您是开发该项目的唯一开发人员。

+0

啊,很烂。在我解编后,源代码会是什么样子?搞砸了,还是会很好的缩进等? – Tiwaz89

+0

可能不是你想要的。我不能说。试一下,看看。 – duffymo

+0

我之前已经对osurce进行了反编译,它出来了(我想我也用过JAD)。我还习惯在使用VCS的情况下拒绝非生产服务器(例如分段/开发服务器)时使用dev war文件打包源文件。我无法告诉你有多少次救了我。 –

2

简短的回答:第

稍长的答案:寻找Java decompilers,但他们不会给你的NetBeans项目文件夹中。

+0

好了,以下应该工作:1 - 我解压.war文件,2 - 我解编类文件,3 - 我从现有的源重新创建netbeans项目?听起来很对,对吧? – Tiwaz89

0

假设您在创建战争时导出了源文件,您可以获取它。否则,JAD是你唯一不能完全信赖的希望。

0

可以将war文件解压缩到只有类文件和其他属性文件的位置。然后使用Java反编译器来查看源代码,并且它工作得很好(不推荐)。

此外,您可以更改属性文件没有JD和所有你需要做的只是改变属性文件和zip到战争文件again.It将工作。

但我建议你在SVN或TFS中维护源代码,或在任何时间点在本地系统中使用版本号复制多个副本。