可以在运行时将目录添加到类路径中吗?

2024-01-23

为了更好地理解 Java 中的工作原理,我想知道是否可以在运行时动态地将目录添加到类路径中。

例如,如果我启动一个.jar using “java -jar mycp.jar”并输出java.class.path财产,我可能会得到:

java.class.path: '.:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java'

现在我可以在运行时修改这个类路径以添加另一个目录吗? (例如,在使用第一次调用类之前.jar位于我要添加的目录中)。


您可以使用以下方法:

URLClassLoader.addURL(URL url)

但是您需要通过反射来完成此操作,因为该方法是protected:

public static void addPath(String s) throws Exception {
    File f = new File(s);
    URL u = f.toURL();
    URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
    Class urlClass = URLClassLoader.class;
    Method method = urlClass.getDeclaredMethod("addURL", new Class[]{URL.class});
    method.setAccessible(true);
    method.invoke(urlClassLoader, new Object[]{u});
}

请参阅 Java Trail反射 http://download.oracle.com/javase/tutorial/reflect/。尤其是这一段反射的缺点

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可以在运行时将目录添加到类路径中吗? 的相关文章

随机推荐

  • PowerShell 脚本不会作为 Windows 计划任务执行

    我有一个 PowerShell 脚本 可以运行 在 Windows 任务计划程序中 我创建了一个要执行的新任务 C Windows System32 WindowsPowerShell v1 0 powershell exe 将参数作为我的
  • mysql 触发器不工作?

    我正在尝试创建一个触发器来根据另一个表上的插入有条件地插入新行 我似乎无法确定语法 到目前为止 这是我所拥有的 DELIMETER CREATE TRIGGER overPricedCar AFTER INSERT ON cars FOR
  • 无法获取Android广告ID

    我正在尝试获取 Android 广告 Id 但找不到正确的方法 事实上 我什至无法获取广告 ID 提供商 isAdvertisingIdProviderAvailable 始终返回 false 我使用的是带有 8 0 PlayStore 的
  • 什么是 Microsoft.Practices.EnterpriseLibrary.Data

    我想知道什么Microsoft Practices EnterpriseLibrary Data dll是以及为什么我们使用这个组件 这个dll有什么好处呢 我想在 3 层架构上创建一个项目 并且很好奇执行 sql 查询的最佳方法是什么 我
  • 使用C++11随机库生成随机数

    正如标题所示 我正在尝试找出一种使用新的 C 11 生成随机数的方法
  • Android:Deviceready 5 秒后尚未触发

    将 Cordova 更新到 v6 4 0 并将 Android 平台更新到 6 0 0 后 我的应用程序不再运行 我得到这个 deviceready has not fired after 5 seconds cordova js 1223
  • NDK/Java项目中的Eclipse CDT C/C++代码补全问题

    我有一个 Android Java 项目 其中包含一些本机 C C 代码 我需要它能够在各种 C 类和函数上完成代码 然而 包含 完整 源代码来源的选项似乎在 Android Java 项目中不可用 有谁知道一种方法 1 欺骗 Eclips
  • 带有 Google 服务帐户主题的generate_access_token()

    在 python 中 我尝试通过服务帐户调用 GMail API委派全域权限 https developers google com identity protocols oauth2 service account authorizing
  • 检索具有 CLSID 的组件的 COM 类工厂错误:8000401a

    从上次开始 我多次收到以下错误 因为我正在使用 Microsoft Word dll 创建 Word 文件 并将其进一步附加到邮件中 Server Error in Application Retrieving the COM class
  • 我如何快速更新其他控制器的用户界面?

    我的应用程序中有几个控制器 当我的应用程序调用一个控制器中的一个函数时 我想更新其他控制器的 UI 我怎样才能做到这一点 class FirstViewController UIViewController func updateUI cl
  • 通过 svnsync 复制 SVN 存储库时如何解决此错误?

    我正在使用 svnsync 复制存储库 并且每次在同一修订版上都会收到此错误 正在传输文件数据 svnsync REPORT of https svn1 avlux net xxxxxx net https svn1 avlux net x
  • Java wait()、notify() 的实现与锁有显着不同吗?

    出于好奇 当Java实现wait 和notify 方法时 它们真的只是使用锁吗 即 wait 获取互斥体 notify 释放互斥体 notifyAll 释放所有互斥体 当然在同一个对象中 使用wait 和notify 除了比使用锁方便之外还
  • 如何向 iOS 14 小部件添加按钮

    我正在尝试向具有系列类型 systemLarge 的小部件添加按钮 我想在不打开应用程序的情况下执行一些代码 有人知道该怎么做吗 例如 快捷方式应用程序小部件包含您可以点击以执行快捷方式而无需打开应用程序的按钮 小部件是只读的 快捷方式应用
  • 使用 ElasticSearch 术语聚合动态创建的存储桶构建 Kibana 直方图

    我希望能够结合Kibana 术语图 能够根据特定属性值的唯一性创建存储桶 以及直方图 根据查询将数据分成桶 然后根据时间说明日期 总的来说 我想创建一个直方图 但我只想根据一个查询的结果创建直方图 而不是像在Kibana 演示应用程序 ht
  • IE10有flex-grow吗?

    Caniuse 使用 ms 前缀表示部分支持http caniuse com search flex grow http caniuse com search flex grow据我所知 然而 当测试 ms flex grow 在 IE10
  • 使用 OpenCV 检测越线人员

    我想统计从两边越线的人数 我有一个放置在天花板上的摄像机 拍摄线条所在的地板 因此摄像机只能看到人的头顶 因此它更多的是物体检测而不是人检测 是否有针对此问题或类似问题的示例解决方案 那我可以向他们学习吗 编辑1 任何时刻都有不止一个人越线
  • python:从字符串模板中提取变量

    我熟悉使用将变量插入字符串的能力模板 https docs python org 2 library string html template strings 像这样 Template value is between min and ma
  • 如何判断该点是否在四面体中?

    我知道四面体的所有坐标和我想确定的点 那么有人知道该怎么做吗 我试图确定该点属于四面体的每个三角形 如果它对所有三角形都成立 则该点位于四面体中 但这绝对是错误的 对于四面体的每个平面 检查该点是否与其余顶点位于同一侧 bool SameS
  • dplyr 中字符串的新列[重复]

    这个问题在这里已经有答案了 我有一个数据框 library tidyverse df lt tribble col1 col2 1 2 现在我想创建一个专栏 我有一个字符串中的新列的名称 它确实像这样工作 df gt mutate col3
  • 可以在运行时将目录添加到类路径中吗?

    为了更好地理解 Java 中的工作原理 我想知道是否可以在运行时动态地将目录添加到类路径中 例如 如果我启动一个 jar using java jar mycp jar 并输出java class path财产 我可能会得到 java cl