2011-09-28 76 views
1

让我们有一个Java应用程序,它包含在文件A.javaB.java中,依赖于somejar.jar文件。问题是:使用来自cmdline的Java JAR文件

  • 如何创建一个可自行运行的JAR文件,其中包含所有的依赖项和源代码?主要条件是仅使用标准Java实用程序(与JDK一起提供;例如:javajavacjar)和不是任何构建工具(如Maven,Ant或任何其他)。

  • 如何在我的应用程序中使用外部JAR文件?例如,该算法是:if the 'otherjar.jar' is present near the main application JAR, we should call method Moo::method1 from that class, passing the new instance of Foo class to it. Moo and Foo should be present in 'otherjar.jar' file. Still, the 'config.xml' file should be there too

回答

1

从链接@ michael667了,你可能会更感兴趣,在本节:Adding Classes to the JAR File's Classpath。尤其是这样一个字条:

注: 的Class-Path头指向本地网络上的类或JAR文件,而不是JAR文件或类通过Internet协议访问中JAR文件。要将JAR文件中的JAR文件中的类加载到类路径中,您必须编写自定义代码来加载这些类。例如,如果MyJar.jar包含另一个名为MyUtils.jar的JAR文件,则不能在MyJar.jar的清单中使用Class-Path标头将MyUtils.jar中的类加载到类路径中。

如果您不编写自己的类加载器,那么使用标准java工具是不可能的。那里有工具,比如One-jar可以为你提供这样的类加载器。

当然,您可以随时手动使用exploding-jar方式,但这似乎并不是您真正想要的。

您也可能会发现这个问题的答案有用:Classpath including JAR within a JAR