当前位置: 首页 > 面试题库 >

将类隐藏在jar文件中

傅星光
2023-03-14
问题内容

在jar文件中隐藏某些类真的是不可能的吗?

我不想允许类的直接实例化以使其更加
灵活。该罐子只有工厂(或外墙)可见。

除了创建两个项目之外,还有什么其他方法可以解决此问题?
(两个项目:第一个项目包含类(实现),
另一个项目引用第一个项目并包含工厂;稍后仅
引用第二个项目)


问题答案:

我认为如果您的公共工厂方法尝试返回“隐藏”的东西,您将遇到编译器故障或警告。

不,您不能在不重新实现自己的类ClassLoader或使用OSGi或任何类似工具的情况下隐藏公共类。

您可以做的是将接口api与实现分开,例如,拥有一个仅包含接口的项目,以及另一个包含实现的项目。但是,您仍然无法隐藏实现类



 类似资料:
  • 我目前正在使用Java服务包装器。它工作得很好,我可以使用我的可执行jar将其作为服务安装,甚至在将其作为服务安装时传递VM参数。 但由于这将在这里和那里部署,我想知道如何防止人们检索Jar文件中的源文件。这可能吗?我正在考虑将jar文件转换为。exe文件,并将其作为这样的服务安装,因为我发现有几个工具能够做到这一点。但他们似乎不允许我传递VM参数。 有人知道我该怎么做吗?

  • 人们可以很容易地提取<代码>。jar文件,请参阅源代码。我想保护源代码不被看到。一个可能的答案是像对zip文件那样对文件进行密码保护。 但是,如果密码是已知的,那么源代码就可以很容易地看到。 有没有办法隐藏源代码并使其能够运行?类似于〈代码〉的东西。exe在Windows中执行。这应该在windows和Linux环境中运行。

  • Linux 下,名称中第一个字符为 . 的文件或者文件夹,系统会将它们隐藏起来。传统上,这种文件大多是用户的配置文件。 您可以尝试以下操作: cd ~ #进入您的用户目录 ls #查看当前目录下的文件列表 ls -a #查看所有文件的文件列表(包括隐藏文件)。 如果您只想查看隐藏文件,而不包括这两个特殊目录,您可以使用 ls 命令的选项 -A (ls -A) 每个目录下都包含

  • 我想隐藏在外部存储器上创建的文件夹,获取隐藏文件夹的路径,以共享在隐藏文件夹中找到的数据。我怎样才能做到这一点。从现在起我所做的一切。 分享 共有putExtra(Intent.EXTRA_流,Uri.parse(“file:///sdcard/mdata/“路径”);

  • 问题内容: 我需要将文件和文件夹隐藏在Windows和Linux上。我知道在后面加上“。” 文件或文件夹的开头将使其在Linux上隐藏。如何在Windows上隐藏文件或文件夹? 问题答案: 对于Java 6及更低版本, 您将需要使用本地调用,这是Windows的一种方法 您应该了解有关win32-api或Java Native的知识。

  • 主要内容:Java15隐藏类的目标Java 15 引入了其他类字节码不能直接使用的隐藏类。这些隐藏类旨在供在运行时生成类并使用反射使用它们的框架使用。 隐藏类被定义为基于 Nest 的访问控制上下文的成员,它可以被卸载而与其他类无关。 该提案 JEP 371 旨在通过提供标准 API 来定义不可发现且生命周期有限的隐藏类,从而改进 JVM 上的所有语言。JDK 框架或外部框架可以动态生成类,从而可以生成隐藏类。 JVM 语言在很大