更改编译

时间:2015-05-07 21:31:54

标签: java ant obfuscation

我正在使用Apache Ant将我的java项目构建到一个大的Jar文件中。 我想知道是否有任何方法可以改变所有类,字段和方法的可见性(来自private / protected> PUBLIC)?

所以在我的源代码中,我仍然会有不同的可见性,但最终产品(我用Ant创建的jar)将向公众开放所有内容。

我已经检查过java混淆器(proguard,yGuard),但他们似乎没有这种可能性。

可以这样做吗?有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果您仍然想要公开所有内容(并且不想使用反射),那么您可以使用ant replace。你只需要创建一个像“temporarysrc”这样的新目录并在那里复制所有java文件,然后调用这个任务+用javac编译结果:

<replace dir="${tmpsrc}" token="private" value="public">
      <include name="**/*.java"/>
</replace>

这不是防弹的,因为如果你有一些方法,那些包含“私人”一词的变量会搞砸一切。此外,如果你有多个类的类,那么会有多个公共类,这是一个错误。

这样做的好处是,如果在项目中包含创建的jar,您也可以从IDE中看到字段和方法。

仅供记录:这仅用于试验:)