问题标签 [urlclassloader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1814 浏览

android - 运行外部代码/应用程序的 Android 应用程序?

我需要一个 Android 应用程序,它应该能够从网络(可能是 .apk 或 .jar)获取数据并从中启动“某些东西”。

如果它是一个“微不足道”的课程,那根本没有问题。这是我的装载机

问题是我要执行的代码看起来很像一个应用程序,它应该有一个“简单”的视图和一些交互。

我无法调用我下载的类的“onCreate”方法。

我想我有三个街道:

  1. 我寻找一种静默安装应用程序然后运行它的方法(可能吗?);
  2. 在您的帮助下,我了解如何在我自己的应用程序中初始化第二个“应用程序”(使用它自己的 R 和所有东西);
  3. 我编写我的主程序来从 Web 获取数据并动态构建页面。

所以,我绝对需要你的帮助!

0 投票
2 回答
1340 浏览

java - 类加载到接口

我目前正在使用的平台(JDK 1.3,BD-J)受到很大限制。我想尝试使用一个 JAR 文件对负载执行自我完整性检查,如果失败,它将进入不可操作状态。很难找出为什么会发生这种情况,但大多数消息来源指出它无法通过 BD-J 结构自行找到/访问它,因此它死了。

这排除了在加载时使用它,而是在应用程序本身中加载它。这是一个相当大的库,所以我必须创建相当多的接口,以便我可以将加载的对象投射到它并可能使用它。这就是我的问题所在。

接口在正常加载时加载,然后库在运行时加载并转换为先前加载的接口,这是一个问题吗?我收到 ClassCastException

我尽我所能基于库公共方法的接口,但是当我尝试转换为接口时,我收到 ClassCastException。注意:一切正常,我可以访问构造函数并读取方法名称。就在铸造它以使其可用时,它失败了。

我项目中的接口包和工具包的接口包不一样,这有关系吗?

我的想法不多了,有什么我忽略的吗?

谢谢。

0 投票
3 回答
8476 浏览

java - Java 安全性:通过 URLClassLoader 加载的沙盒插件

问题摘要:如何修改下面的代码,以便不受信任的、动态加载的代码在安全沙箱中运行,而应用程序的其余部分保持不受限制?为什么 URLClassLoader 不像它所说的那样处理它?

编辑:更新以回应 Ani B.

编辑 2:添加了更新的 PluginSecurityManager。

我的应用程序有一个插件机制,第三方可以提供一个包含实现特定接口的类的 JAR。使用 URLClassLoader,我可以加载该类并实例化它,没问题。因为代码可能不受信任,所以我需要防止它行为不端。例如,我在一个单独的线程中运行插件代码,以便在它进入无限循环或时间过长时将其终止。但是试图为他们设置一个安全沙箱,这样他们就不能做诸如建立网络连接或访问硬盘上的文件之类的事情,这让我非常生气。我的努力总是导致要么对插件没有影响(它与应用程序具有相同的权限),要么还限制了应用程序。我希望主应用程序代码能够做任何它想做的事情,

关于该主题的文档和在线资源是复杂的、令人困惑的和矛盾的。我已经在不同的地方(例如这个问题)读到我需要提供一个自定义的 SecurityManager,但是当我尝试它时我遇到了问题,因为 JVM 延迟加载 JAR 中的类。所以我可以很好地实例化它,但是如果我在加载的对象上调用从同一个 JAR 实例化另一个类的方法,它就会爆炸,因为它被拒绝从 JAR 读取的权利。

从理论上讲,我可以在我的 SecurityManager 中检查 FilePermission 以查看它是否试图从自己的 JAR 中加载。这很好,但是URLClassLoader 文档说:“默认情况下,加载的类仅被授予访问 URLClassLoader 创建时指定的 URL 的权限。” 那么为什么我什至需要一个自定义的 SecurityManager 呢?URLClassLoader 不应该只处理这个吗?为什么不呢?

这是一个重现问题的简化示例:

主应用程序(受信任)

插件测试.java

插件.java

PluginSecurityManager.java

插件线程.java

插件 JAR(不受信任)

我的插件.java


更新: 我对其进行了更改,以便在插件代码即将运行之前通知 PluginSecurityManager 以便它知道它正在使用哪个类源。然后它将只允许对该类源路径下的文件进行文件访问。这也有一个很好的优势,我可以在我的应用程序开始时设置一次安全管理器,并在我输入和离开插件代码时更新它。

这几乎解决了这个问题,但没有回答我的另一个问题:为什么 URLClassLoader 不像它所说的那样为我处理这个问题?我将把这个问题留待一段时间,看看是否有人对这个问题有答案。如果是这样,该人将获得接受的答案。否则,我会将它授予 Ani B.,前提是 URLClassLoader 文档存在缺陷,并且他关于制作自定义 SecurityManager 的建议是正确的。

PluginThread 必须在 PluginSecurityManager 上设置 classSource 属性,这是类文件的路径。PluginSecurityManager 现在看起来像这样:

0 投票
1 回答
6337 浏览

java - 是否可以在运行时加载库?

如果 java 库(.jar 文件)不在类路径上,有没有办法在运行时加载它?

0 投票
2 回答
2549 浏览

java - java UrlClassLoader:findResources返回null,但loadClass返回类

我作为 UrlClassLoader 的默认子级,添加了我所有的 jar 文件

然后我试图从加载器中获取一些类:

它正常返回类。

当我尝试按包查找所有类时:

它返回空枚举。为什么?

0 投票
1 回答
392 浏览

java - 为自定义应用程序加载插件会产生 NoClassDefFoundError

我在类加载的概念上遇到了一些问题,我已经编程了一段时间,但我对类加载的工作原理相对了解,我已经浏览了几个示例并阅读了详细信息在类加载和类本身的背后,虽然我在一定程度上理解它,但有一个概念让我无法理解,而且似乎很难用搜索友好的术语来表达。

本质上,我正在尝试为我一直在为 Minecraft 开发的游戏模式创建“公会”,这些公会位于它们自己的类中,并在启动时或每当发出“reloadGuildFiles()”方法时加载游戏。我通过首先导出主应用程序并将其添加到正在创建的公会的类路径以及主应用程序依赖项来开发这些类。

这是'reloadGuildFiles' 方法。

这是包含在主应用程序中的 Guild 类。

这是我要加载的课程

这是它给我的错误:

据我所知,据我所知,即使主应用程序位于要加载的类的构建路径上,类加载器也无法识别类 Guild。我想我需要尝试让类加载器识别主应用程序中包含的 Guild 类,无论如何要这样做还是我明显做错了什么?

0 投票
1 回答
7557 浏览

eclipse - classes.jar(java.net 包)中带有 URLClassLoader 的 ClassNotFoundException

在 Eclipse Galileo 上,在执行 Debug As/Web Application 时出现以下 ClassNotFoundException。但是在执行运行方式/Web 应用程序时工作得很好。

我收到消息“源附件不包含文件 URLClassLoader.class 的源。您可以通过单击下面的更改附件源来更改源附件:”

在项目窗口中,似乎 URLClassLoader 类来自 Java.net 包,该包来自 /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/classes.jar。

我在机器上找到了罐子,我还缺少什么?为什么它只是调试问题?

我的 iMac 10.6.5 机器上的 JRE 系统库是否可能已过时?或者以某种方式安装/卸载一些 jar/package 导致了这个问题?

这就是我所拥有的 - JRE System Library [JVM 1.6.0 (MacOS X Default)] - 更新它有助于解决问题吗?但是如何更新呢?

请帮忙!

0 投票
1 回答
424 浏览

java - java urlclassloader 用法。是否仅在极少数情况下需要?

在哪种情况下,可以使用 aURLClassLoader从指定路径中的特定 jar 加载类?
例如

如果我想使用 customClasses.jar 中的类,我一直认为将这个 jar 放在可从 CLASSPATH 访问的路径中就足够了。
然后在我的代码中使用apackage.MyCustomClass.
我想我在这里有一些被误解或遗漏的东西,所以有人可以解释一下并举例说明上述加载类的片段何时有用吗?
谢谢!

0 投票
1 回答
1160 浏览

eclipse-plugin - ISelection -- 如何在导航器中获取所选类的 ClassLoader

我是 Eclipse 插件开发的新手,我正在尝试开发一个插件,我需要在其中加载在导航器中选择的类。

您能否指导我如何从 Eclipse 插件加载一个类或创建一个类加载器,以便在使用我的插件的 Eclipse 工作台中加载一个类。

提前致谢。

问候吉拉尼

0 投票
1 回答
1891 浏览

java - URLClassLoader 不工作

我想在目录F:/badge-dao/bin/com/badge/dao/impl/中加载一个名为BadgeDaoImpl的文件。我正在编写和测试以下代码。

如果我更改目录或类名,它会引发异常。对于我认为应该工作的以下代码,它不会抛出 classNotFoundException,而是暂停并将控制权交给 EventTable 的 finally 块。

你能告诉我我哪里弄错了吗?