我目前正在处理一个jar文件,我将很快分发它。我期待为用户分发它,而无需他安装JRE来运行我的应用程序。我非常了解Jar2Exe之类的工具,但是这些工具会向可执行文件注入一些其他内容,因此我不会为此购买许可证!所以我正在研究一个解决方案。我有一个主意,因此我将创建一个包含此内容的C文件(我在诞生时使用C语言功能!):#include <stdlib.h>int main() { system("java -jar test.jar"); return 0;}然后,我会将jar文件和C文件的编译文件与java.exe和J.installation目录放在同一目录中,这应该可以工作,但肯定有很多java.exe依赖于它们的dll!这些依赖关系的列表将它们全部放在一个目录中并使该想法起作用将非常有帮助:)请注意:我不想从JAR文件创建可执行文件,我只希望用户不需要安装JRE。编辑我意识到上述方法不切实际,因此我将在幕后安装JRE(我的唯一目标是用户无法确定安装过程中发生的事情),我将所需文件复制到,但我还应该做什么?换句话说,JRE安装程序在后台执行什么操作? (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 您为什么认为其他公司希望您为他们的产品付款?提示:因为它不是那么容易。关键是,不仅需要您的JAR文件。您需要使代码将要使用的每个类都对您正在启动的JVM可用。您知道,那些商业工具正在将其他东西备份到其EXE文件中。您认为使它们的EXE文件太大而又慢的东西。那就是您运行Java类所需的东西...单独的JRE附带了数百万字节的Java类,这些Java类打包在各种JAR中。并且您使用的任何第三方库也将是必需的。因此,当然,当您能够找到执行代码时将要加载的所有类时,则可以将其手动打包到一个JAR中。但是如前所述:如果那是一件容易的事,那么其他人将没有太多的业务案例。当然,当反射和Class.forName()出现时,您就彻底崩溃了。由于您根本无法预测,因此将在运行时使用哪些类。 (adsbygoogle = window.adsbygoogle || []).push({});
07-24 09:49
查看更多