Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 停止对可运行Jar的外部库访问_Java - Fatal编程技术网

Java 停止对可运行Jar的外部库访问

Java 停止对可运行Jar的外部库访问,java,Java,因此,我有一个Java应用程序,我将以一定的价格发布到我的一个社区。该应用程序刚刚完成,准备进行模糊处理,但问题是 我发现,当我将Jar添加到Eclipse中的另一个项目中时,您可以在外部实例化类,并将我的程序用作外部库,在程序之外生成脚本。这不是我想在这里实现的。。。我自学成才,所以我有灰色的知识领域,因为我还没有正式学习,但我在Java方面还是很有经验的。。。我试过用谷歌搜索,结果什么都没出现,也许我的措辞不正确。但如果我能得到一些帮助,我将不胜感激 以下是我的软件包结构: src.com

因此,我有一个Java应用程序,我将以一定的价格发布到我的一个社区。该应用程序刚刚完成,准备进行模糊处理,但问题是

我发现,当我将Jar添加到Eclipse中的另一个项目中时,您可以在外部实例化类,并将我的程序用作外部库,在程序之外生成脚本。这不是我想在这里实现的。。。我自学成才,所以我有灰色的知识领域,因为我还没有正式学习,但我在Java方面还是很有经验的。。。我试过用谷歌搜索,结果什么都没出现,也许我的措辞不正确。但如果我能得到一些帮助,我将不胜感激

以下是我的软件包结构:

src.com
Contains main class
src.com.scripts
Contains Abstract Script class
src.com.scripts.impl
Contains the actual scripts that extend the abstract Script class
我试过做的事情:

src.com
Contains main class
src.com.scripts
Contains Abstract Script class
src.com.scripts.impl
Contains the actual scripts that extend the abstract Script class
我从抽象脚本类中删除了公共标识符,但是主类无法从中调用它,因为它以前在包中。那么,当我的项目在包中进行排序,并且它们都需要相互访问时,我该如何处理呢?

没有解决方案

如果人们想对你的代码进行反向工程,他们会的。你无法改变这一点<代码>公共的/
私有的
除了帮助您编写好的可移植代码外,基本上没有任何意义

也就是说,Java通常比其他语言更容易进行反向工程和绑定。Java不内联函数,除非另有说明,否则它甚至会保留所有类和方法名。如果您使用了像C这样的语言,那么使用优化的二进制文件将是一个更大的麻烦,但结果仍然是一样的

把罐子弄糊涂,今天就到此为止手动更改代码编写方式对您的危害大于对他们的危害。

没有解决方案

如果人们想对你的代码进行反向工程,他们会的。你无法改变这一点<代码>公共的/
私有的
除了帮助您编写好的可移植代码外,基本上没有任何意义

也就是说,Java通常比其他语言更容易进行反向工程和绑定。Java不内联函数,除非另有说明,否则它甚至会保留所有类和方法名。如果您使用了像C这样的语言,那么使用优化的二进制文件将是一个更大的麻烦,但结果仍然是一样的


把罐子弄糊涂,今天就到此为止手动更改代码编写方式对您的危害比对他们的危害更大。

嘿,不确定您是否理解了我的意思,但我不关心反向工程,事实上您可以将我的jar添加到程序中并访问我的内部方法。我尝试过添加随机的可运行jar,但有些jar没有显示任何库。即使我用winrar打开文件,它也有很多类文件。这不是与类修饰符有关吗?我想我可以正确使用受保护的类修饰符并更改包的结构?@JoeTaylor您可以使用反射将任何变量公开,删除最终修饰符,以及在运行时执行更多操作。同样是的,
.jar
文件被美化为
.zip
文件。但是,您实际上无法删除
.class
文件
.class
文件只是编译
.java
文件。除了切换到一种不同的编程语言之外,您的问题没有解决方案,因为这不是Java的用途。听起来你可能想用Java来做一些事情,但事实并非如此。难道你不能用Java安全管理器来阻止反射吗?当然可以,但如果它被用作库,他们可以在你有机会修改和覆盖更改之前提供一个安全管理器。没有办法。嘿,不确定你是否明白我的意思,但我不关心逆向工程,事实上你可以将我的jar添加到程序中并访问我的内部方法。我尝试过添加随机的可运行jar,但有些jar没有显示任何库。即使我用winrar打开文件,它也有很多类文件。这不是与类修饰符有关吗?我想我可以正确使用受保护的类修饰符并更改包的结构?@JoeTaylor您可以使用反射将任何变量公开,删除最终修饰符,以及在运行时执行更多操作。同样是的,
.jar
文件被美化为
.zip
文件。但是,您实际上无法删除
.class
文件
.class
文件只是编译
.java
文件。除了切换到一种不同的编程语言之外,您的问题没有解决方案,因为这不是Java的用途。听起来你可能想用Java来做一些事情,但事实并非如此。难道你不能用Java安全管理器来阻止反射吗?当然可以,但如果它被用作库,他们可以在你有机会修改和覆盖更改之前提供一个安全管理器。这是没有办法的。