java - 将 jar 文件中的类从 url 加载到内存,然后从所有类中运行主类

标签 java class url jar load

我正在尝试将 jar 文件中的类从 URL 加载到内存中,然后运行加载的类之一。我不希望用户可以访问类文件或 jar。我见过几个类似的问题,但没有得到解答。

我知道它可能会使用 URLClassLoader 和 ByteArrayInputStream/ByteArrayOutputStream。

预先感谢您的帮助。

类似的未回答的问题:

How to load a jar from an URL without downloading it?

Load jar from URL

最佳答案

你走在正确的道路上(我认为)。步骤是:

  1. 使用 URLConnection 打开 JAR 文件的流。
  2. 读取流并将其写入ByteArrayOutputStream,并提取字节数组。
  3. 在字节数组上打开 ByteArrayInputStream,然后将其包装在 JarInputStream 中。
  4. 迭代 JAR 文件条目的成员,保存条目信息并将条目文件内容缓冲在内存中。
  5. 编写一个自定义类加载器,该加载器使用 JAR 文件条目和内容的内存缓存。

我无法向您指出示例代码,因为我找不到任何代码。

(您几乎必须将内容缓存在内存中,因为 JarFile API 需要 RandomAccessFile,这意味着数据位于文件系统中。在某些系统上您可以创建一个临时文件,在其上打开 RAF,取消链接,然后获取 URL 并将其写入 RAF。但这不可移植...)


我应该指出,如果您将此作为某些许可或“知识产权管理”计划的一部分,那么您可能是在浪费时间。您希望在客户端代码(即在用户计算机上运行的代码)中实现的任何实用方案都可能被破坏......除非计算机完全锁定。

关于java - 将 jar 文件中的类从 url 加载到内存,然后从所有类中运行主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17872180/

相关文章:

java - 可以使用配置文件来描述 JAXB 导出吗?

Java MySQL 语法错误异常

Android 如何使用给定格式 myapp ://http://创建自定义 URL 方案

python - python如何捕获302重定向url

java - Spring-boot:将 Servlet Filter 应用于除一个之外的所有路由

java - 如何读取Excel单元格值中的下拉列表项?

Javascript es6类处理错误

java - onCreate 与声明期间的成员对象实例化

c++ - 使用类模板 :error LNK2019 的 C++ 程序

php - .htaccess - 如何隐藏 .php 网址?