java - 从自己的 Jar 项目调用 Jar 库?

标签 java jar

我用 java 编写了一个应用程序并将其转换为执行 jar 文件,我的项目依赖于“jxl.jar”。 有什么办法可以将“jxl.jar”复制到我的 jar 文件中,然后调用它。

我认为那叫做“嵌套 jar ”?!?

非常感谢

最好的问候,

迈克

最佳答案

最简单的方法是解压 jxl.jar 并将其与您的类文件一起打包到一个 jar 中。

您也可以将 jxl.jar 放入您的 jar 中,使用 JarClassLoader 加载它并使用反射调用,但这可能不值得付出努力并增加复杂性。

这看起来应该是这样的:

import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;

public class Preloader
{
    public static void main(String[] args) throws Exception
    {

        Class<Preloader> c= Preloader.class;

        URLClassLoader loader = new URLClassLoader(new URL[]{
            c.getResource("program.jar"),
            c.getResource("library.jar")});

        Class<?> main_class=loader.loadClass("Main");
        Method main_method = main_class.getMethod("main", args.getClass());
        main_method.invoke(null, new Object[]{args});

    }
}

不幸的是,它不适用于嵌套的 jar。 URLClassLoader 有问题。您可以将嵌套的 jar 提取到临时文件并将它们传递给 URLClassLoader。您还可以按照 here 所述使用自定义 URLStreamHandler ,它甚至可能是一个可行的解决方案。

关于java - 从自己的 Jar 项目调用 Jar 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6160854/

相关文章:

java - 如何重写库类的方法或分配参数值?

java - 将 .jar 导入 IntelliJ Java 项目

java - 如何为maven exec :java?配置类路径

java - 如何从谷歌游戏控制台获取 IAP SKU 代码?

带有多个字符定界符的 Java String.split

java - Hibernate多对多映射到同一实体单向

java - MPI、Sungrid 与 JPPF?

java - 将 Android 库从 JCenter 发布到 Maven Central

java - 如何从 native 代码/在 dll 中嵌入 jar 调用 java 方法

java - 使用 ant build 创建的 jar 出现 NoClassDefFound 错误