如何打包java项目?

如何打包java项目?,java,project,key,Java,Project,Key,我制作了一个java项目,并希望将其交付给客户机,但我不希望将其作为jar文件交付,因为客户机可以通过解压缩jar文件轻松查看源代码 如何打包java项目,使客户端无法查看源代码或更改源代码 还有一件事,我是否可以集成一个密钥功能,以便客户端只能通过首先使用我提供的密钥注册该软件来访问该软件 第二,我是否可以集成另一个功能,通过该功能,软件只能通过该键在一台机器上运行 请记住,该软件应该仍然具有跨平台功能,如果不可能,那么我如何才能像在Windows上一样为Debian Linux制作该软件。到

我制作了一个java项目,并希望将其交付给客户机,但我不希望将其作为jar文件交付,因为客户机可以通过解压缩jar文件轻松查看源代码

如何打包java项目,使客户端无法查看源代码或更改源代码

还有一件事,我是否可以集成一个密钥功能,以便客户端只能通过首先使用我提供的密钥注册该软件来访问该软件

第二,我是否可以集成另一个功能,通过该功能,软件只能通过该键在一台机器上运行


请记住,该软件应该仍然具有跨平台功能,如果不可能,那么我如何才能像在Windows上一样为Debian Linux制作该软件。

到您的第一点。为什么不仅仅是jar类文件?这些是字节码,因此客户端将无法查看源代码


至于提供钥匙。这是可以做到的,有一些库允许这样做,但要小心,至少据我所知,还没有开发出一个尚未破解的DRM系统。大多数用户不喜欢软件限制他们的能力。这一点同样适用于你的第三个问题。

适用于你的第一个问题。为什么不仅仅是jar类文件?这些是字节码,因此客户端将无法查看源代码


至于提供钥匙。这是可以做到的,有一些库允许这样做,但要小心,至少据我所知,还没有开发出一个尚未破解的DRM系统。大多数用户不喜欢软件限制他们的能力。同样的观点也适用于第三个问题。

您可以做一些简单的事情,让客户机难以掌握您的源代码并强制执行每主机(等)许可。例如,混淆器使字节码文件的逆向工程变得更加困难,许可证管理器支持基于您生成和提供的“密钥”的一系列限制

问题是,这些都不能保护你免受那些决心颠覆你试图施加的限制的人的伤害。例如,任何模糊处理程序都无法阻止某人找出您的代码调用许可证管理器的位置,并且一旦他们知道可以修改代码以破坏任何许可证检查

除了锁定整个执行平台(例如,关闭客户端运行调试器、读取物理设备等的能力),您对此无能为力


一个更可行的策略是在您要求客户端签署的软件许可证中包含适当的保护。如果客户故意违反许可协议,您可能需要将其告上法庭。您可以做一些简单的事情,让客户难以掌握您的源代码并强制执行每主机(等)许可。例如,混淆器使字节码文件的逆向工程变得更加困难,许可证管理器支持基于您生成和提供的“密钥”的一系列限制

问题是,这些都不能保护你免受那些决心颠覆你试图施加的限制的人的伤害。例如,任何模糊处理程序都无法阻止某人找出您的代码调用许可证管理器的位置,并且一旦他们知道可以修改代码以破坏任何许可证检查

除了锁定整个执行平台(例如,关闭客户端运行调试器、读取物理设备等的能力),您对此无能为力


一个更可行的策略是在您要求客户端签署的软件许可证中包含适当的保护。并且承认,如果客户故意违反许可协议,您可能需要将其告上法庭。

类文件也可以使用免费的反编译器轻松地进行反编译。我喜欢“adatapost”建议的代码模糊处理。你能详细解释一下哪些库提供了关键功能吗?如果人们真的想要,模糊处理的代码也可以很容易地进行反向工程。在一天结束时,除非您保持对程序的控制,即通过网络接口(无论是web还是其他),否则您无法保证客户端不会干扰它。即便如此。。。。至于库,如果你真的想要一个…看看类文件可以很容易地反编译反编译器可用的免费软件也。我喜欢“adatapost”建议的代码模糊处理。你能详细解释一下哪些库提供了关键功能吗?如果人们真的想要,模糊处理的代码也可以很容易地进行反向工程。在一天结束时,除非您保持对程序的控制,即通过网络接口(无论是web还是其他),否则您无法保证客户端不会干扰它。即便如此。。。。至于图书馆,如果你真的想要一个…看看非常有用的答案。谢谢你。有事总比无事好,所以你能更详细地告诉我如何使用许可证管理器吗?非常有用的答案。谢谢你。有事总比无事好,所以您能更详细地告诉我如何使用许可证管理器吗。