Java - 从 Jar 文件创建类

2024-03-08

是否可以从 jar 文件加载类,然后从中创建对象?

注意:jar文件在程序编译时并不存在,而是用户后来添加的,并在用户启动程序时加载进来的。

我的代码是这样的:用户有一个 jar 文件,里面只有一个已编译的 java 类。然后,用户将此 jar 文件放入一个目录中并启动我的程序,该程序将查找该目录并找到此 jar 文件。然后它加载这个 jar 文件并从中创建一个类,然后从中创建一个对象并将其添加到数组中。

除了从 jar 文件(作为 java.io 文件加载)创建一个类,然后从该类创建对象之外,我已经把所有东西都记录下来了。

有什么帮助吗?谢谢。


您正在寻找Class#forName http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#forName(java.lang.String)and Class#newInstance http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#newInstance()方法。

这个链接 http://www.xyzws.com/Javafaq/what-does-classforname-method-do/17提供了一个关于初始化知道其名称的类的好示例(从链接中提取):

Class c = Class.forName("com.xyzws.AClass");
AClass a = (AClass)c.newInstance();

这些情况的一个很好的例子是使用 JDBC(正如链接也指出的那样),因为您初始化了要连接的数据库引擎驱动程序的对象。请记住,该驱动程序来自项目中导入的 jar,它可能是 MySQL、Oracle 或 MSSQL Server 的 jar,您只需提供驱动程序类名,然后让 JDBC API 和 jar 处理 SQL 工作。

Class.forName("org.gjt.mm.mysql.Driver");
Connection con = DriverManager.getConnection(url, "myLogin", "myPassword");

另外,对于动态加载 jar 的这个特定问题,有问题和答案:

  • 我应该如何在运行时动态加载 Jars? https://stackoverflow.com/q/60764/1065197
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java - 从 Jar 文件创建类 的相关文章

随机推荐

  • 带进度条的 Tkinter GUI

    我有一个简单的 Tk GUI 和一个附加到按钮的函数中的长流程 我想要一个进度条 当我点击按钮时 就像它开始一个漫长的过程一样 我怎样才能做到这一点 这是我当前的代码 from tkinter import Button Tk HORIZO
  • Gradle 测试命令未运行任何测试

    我有一个可以在 Android Studio 上运行的简单测试实现 这个类位于我的项目的 src androidTest 目录中 应用程序测试 java public class ApplicationTest extends Applic
  • 通过开始和结束索引抓取 List 的一部分

    这可能吗 例如 如果我有 List
  • 使用 C、gcc、C99 和宏优化微控制器的简约 OOP

    我经常必须用 C 语言对微控制器进行编程 因为 C 编译器通常不可用 或者由于各种错误而无法编写极小的代码 但很多时候 OOP 语法糖 在使硬件程序封装得更清晰 易于维护方面非常方便 所以我想找出是否有一种方法可以在 C 中执行 OOP 语
  • Objective-C 如何检查字符串是否为空

    所以 我想检查我的数组中是否有该项目 clientDataArray objectForKey ClientCompany is nil temp clientDataArray objectForKey ClientCompany if
  • 如何用PHP生成随机密码?

    或者有没有自动生成随机密码的软件 只需构建一串随机数a z A Z 0 9 或者任何你想要的 直到所需的长度 这是 PHP 中的示例 function generatePassword length 8 chars abcdefghijkl
  • 为restify.js 实现基于令牌的身份验证的最佳方法是什么?

    我正在尝试使用restify js 构建一个RESTful api 但我不想将该api 暴露给所有人 我将使用基于令牌的身份验证 我脑子里的流程是这样的 不知道是否合理 用户将用户名 密码发送到 api 来获取令牌 此令牌应包含在调用所有其
  • Python 对新实例的交替引用

    这些天我一直在玩Python 我意识到Python如何将id 地址 分配给新实例 int和list 的一些有趣的方式 例如 如果我继续使用一个数字 或两个不同的数字 调用 id 函数 它会返回相同的结果 例如 gt gt gt id 123
  • 使用 JSON 键作为嵌套 JSON 中的属性

    我正在 python 2 7 中使用嵌套的类似 JSON 的数据结构 我与一些外国 perl 代码进行交换 我只是想以更Pythonic的方式 处理 这些列表和字典的嵌套结构 所以如果我有这样的结构 a x 4 y 2 3 a 55 b 6
  • 表格视图单元上的步进器(快速)

    我将步进器的出口和操作放入表格视图单元格中 并使用协议委托将其连接到表格视图 当我点击第一行中的步进器时 步进器值在第一行中正常显示 但它也出现在某个随机行中 如何解决这个问题 表格视图单元格 protocol ReviewCellDele
  • WPF 工具包数据网格 - 自定义选项卡

    我有一个包含 3 列的 WPF 工具包 DataGrid 只有第三列允许数据输入 前两列是静态的 文本描述 是否可以控制选项卡和导航 以便选项卡和上下左右按钮将忽略前两列并在第三列的范围内运行 您可以使用以下命令禁用前两列上的制表符IsTa
  • oracle FOR LOOP 不在 SYS_REFCURSOR 中迭代

    程序如下 打开游标 然后通过批量收集获取选择查询的输出 问题是所有 ID 都存储在批量收集中 但我无法使用批量收集变量作为输入来循环第二个选择查询 它只考虑第一个 ID 而不是全部 输出应该是 SYS REFCURSOR 请说明我在这里缺少
  • 使用layout/main.xml 文件将选项卡添加到Android 应用程序

    我从 Android 开始 想向现有应用程序添加选项卡 现在我只有一项活动 其布局是在 XML 文件中定义的 我现在想添加其他选项卡 我查了一下发现http developer android com resources tutorials
  • 如何让 Holo Light 主题在我的 Xamarin 应用程序中工作

    我正在尝试让我的应用程序使用 Holo Light 主题 我为 Holo 创建了一个自定义主题并将其放入 资源 values v11 Fsd Theme xml
  • 如何提取 docker 镜像的所有替代标签?

    我使用构建管道管理 gitlab 所有组件都封装在来自官方 gitlab 维护者的 docker 镜像中 每当我更新时 通常每周一次 我需要检查 gitlab gitlab runner helper 是否仍然适用于当前最新版本的 gitl
  • PhpMailer 不发送邮件 - TLS 错误?

    我在使用 phpmailer 发送电子邮件时遇到问题 发送电子邮件的代码是 mail User email protected cdn cgi l email protection mail Password My Password mai
  • 为什么 Chrome 需要 12 秒来更新图层树?

    我有一个相对不复杂的 ASP Net 应用程序 它偶尔会在层中显示一条警报消息 带有阴影 并带有一个按钮来消除通知 这段代码多年来一直运行良好 最近 我收到用户抱怨响应速度非常慢 他们的体验是页面完全没有响应 并且当他们单击 确定 按钮时很
  • 如果在某些输入之后使用 getline() 则不起作用[重复]

    这个问题在这里已经有答案了 可能的重复 需要有关 getline 的帮助 https stackoverflow com questions 1744665 need help with getline getline 不起作用 如果我在一
  • 为什么 var 在“foreach (var row in table.Rows)”中计算结果为 System.Object?

    当我输入这个foreach陈述 foreach var row in table Rows var 的工具提示说class System Object 我很困惑为什么不是class System Data DataRow 如果你想知道 是的
  • Java - 从 Jar 文件创建类

    是否可以从 jar 文件加载类 然后从中创建对象 注意 jar文件在程序编译时并不存在 而是用户后来添加的 并在用户启动程序时加载进来的 我的代码是这样的 用户有一个 jar 文件 里面只有一个已编译的 java 类 然后 用户将此 jar