我想为我的java项目创建一个exe文件,但问题是任何人都可以从exe获取我的应用程序代码。有没有办法让任何人都无法从exe文件中获取应用程序的源代码 ?
答案 0 :(得分:3)
您可以通过互联网创建一个带有Excelsior Jet应用程序(如我以前所拥有)或其他免费软件(或者如果您想投资它的应付软件)的exe。 excelsior jet的问题在于,如果你想免费使用它,你将只能获得90天的试用期,并且所有创建的exes在试用期结束后停止工作。 Exes不是防破解的,但它们确实使得源代码变得更加难以理解。创建exe的另一个好处是最终用户不会如此依赖Java来安装在他们的计算机中。
答案 1 :(得分:0)
有没有办法让任何人都无法从exe文件中获取应用程序的源代码?
没有
简短阐述(我期望作者提出的问题): Java类被编译为字节码以由JVM执行。由于JVM主要设计为由软件实现,因此JVM指令集包含某些高级操作,例如对象创建,方法调用等,允许1:1映射到源代码中的高级操作。这一点,以及JVM指令集的详细记录,是重构Java源代码如此简单的主要原因之一。
简短阐述(问到的问题):
从Java类创建以平台为目标的可执行文件并非易事。其中一个原因可能是整个Java标准库(包括基本java.lang
类)是用Java实现的。
假设您已经解决了这个问题,很可能通过提供本机实现的标准库类的子集,生成的汇编代码仍然可以反向工程回到源代码中。可以跟踪类/对象/方法边界并从那里开始工作。当然,由此产生的来源可能几乎不可读/可理解。