【问题标题】:How to load My Jar to ClassPath at runtime through Java Coding?如何在运行时通过 Java Coding 将 My Jar 加载到 ClassPath?
【发布时间】:2015-02-12 05:37:30
【问题描述】:

我正在使用 Net Beans 中的 Swing。我有自己的 jar,其中包含类和方法。我将使用 JAVA 反射 API 调用这些类和方法,但在此之前我想在运行时将我的 Jar 加载到类路径中。我有一个 J 按钮,点击它我会得到 Jar Name 和 Jar 路径。但是我无法在运行时将 Jar 加载到类路径。有一些链接,但没有帮助。请给我一个简单的例子。我应该将我的 jar 加载到类路径中。这是我唯一的问题。我会解决的。请帮忙。

【问题讨论】:

  • 你需要使用某种Classloader,看看URLClassloader。请记住,当您想要加载这些类时,您将需要使用这个类加载器来完成它,它不会通过您习惯的默认类加载机制可用。

标签: java swing netbeans jbutton


【解决方案1】:

您可以通过使用ClassLoader 在运行时加载类,例如查看URLClassLoader

File yourJarFile = ...;
URLClassLoader classLoader = new URLClassLoader(new URL[]{yourJarFile.toURI().toURL()});

这将允许您加载类并实例化它们...

Class class = classLoader.loadClass("fully.qualified.packagename.to.your.AwesomeClass");

然后您可以使用类似...的方式实例化它们

Object obj = class.newInstance();

如果您想使用特定的构造函数,也可以使用反射。请记住,您将无法直接在当前类加载器上下文中引用这些类,因为当前类加载器对它们一无所知

【讨论】:

  • 令人惊叹的一个......工作出色......非常感谢你的精彩回答......但是在'Class class= classLoader.loadClass(“fully.qualified.packagename. to.your.AwesomeClass");'我们必须手动给出类名....但是想在运行时手动加载这个类,我也使用这个代码得到了解决方案'JarFile jarFile = new JarFile(myJarFile.getAbsoluteFile());枚举 allEntries = jarFile.entries(); while (allEntries.hasMoreElements()) { JarEntry entry = (JarEntry) allEntries.nextElement(); '
  • 这取决于你想要做什么。当我这样做时,我通常会做一些插件,所以我创建了一个 text/xml,我可以使用 getResource 并配置我想要加载的入口类来开始
猜你喜欢
  • 2018-06-11
  • 2020-07-09
  • 2016-06-26
  • 2020-09-24
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 2011-02-08
相关资源
最近更新 更多