Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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_Class_Jar - Fatal编程技术网

Java 控制对JAR中类的访问

Java 控制对JAR中类的访问,java,class,jar,Java,Class,Jar,好的,我写了一个JAR作为即时通讯系统的后端实现。为了让这些类能够相互作用,我使用了公共类MyClassHere{…}。但是,当我将所有类编译到JAR中时,我不希望除主类之外的任何类都可以访问。我该怎么做呢?我能想到的唯一方法是使用构建链中的工具停止暴露主类之外的所有内容。不是很优雅,速度也很慢,但在这些类的构造函数中,您可以检查实例化它们的类(使用new Exception.getStacktrace())-和限制控件(如果由除类之外的任何对象调用)。我将如何配置ProGuard来执行此操作?

好的,我写了一个JAR作为即时通讯系统的后端实现。为了让这些类能够相互作用,我使用了
公共类MyClassHere{…}
。但是,当我将所有类编译到JAR中时,我不希望除主类之外的任何类都可以访问。我该怎么做呢?

我能想到的唯一方法是使用构建链中的工具停止暴露主类之外的所有内容。

不是很优雅,速度也很慢,但在这些类的构造函数中,您可以检查实例化它们的类(使用
new Exception.getStacktrace()
)-和限制控件(如果由除类之外的任何对象调用)。

我将如何配置ProGuard来执行此操作?我将对它进行一些搜索,但我以前从未使用过它。该链接页面上的第一个示例基本上只保留了主函数,隐藏/模糊/重命名/优化了其他所有内容。但我没有主函数,因为这只是实现。基本上,我希望能够使用这个JAR,编写另一个调用主文件构造函数的程序,然后只能触及该主类的方法public*的示例配置中,code>可以用来控制类的实例化,但我也不希望访问类的方法。在服务器上几乎每个类的每个方法上实现这一点会有点困难overhead@Odiefrom不是每个方法-除了构造函数,只有静态方法需要添加这些检查。没有对象实例化,不能调用非静态方法。但我同意,不是很优雅。