我用 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/