将java库包含到自己的库中



我为自己创建了一个小框架,我想在多个项目中使用。我还希望分布式jar文件包含所有外部库,这样我的项目只需要包含我的库就可以访问所有外部库。

我需要这个来简化更新外部库。

所以我把它放在我的build.xml中,它将dist/lib中的所有库添加到我自己的jar文件中。

<target name="-post-jar">  
    <!-- Include all java libraries -->
    <fileset dir="dist/lib" id="extern.libs">
        <include name="*.jar" />
    </fileset>
    <!-- Add the libraries from the fileset to the project.jar -->
    <jar jarfile="${dist.jar}" update="true">  
        <zipgroupfileset refid="extern.libs"/>
    </jar>  
</target>  

但是当我尝试使用外部库,如"org.zkoss.zk.ui。组件"我得到无法找到此库的错误。

是否有更好的方法将外部库包含到我自己的库中,以便我的项目可以使用它们?

您可以发布一个Maven工件,然后框架的用户可以使用它,而不必自己包含依赖项——您的pom就足够了。

如果你想创建一个"一体化"的工件,考虑像OneJar或jarjar或Maven的Shade插件这样的东西来创建一个没有外部依赖的jar。

标准的类加载器无法在本身位于jar中的jar中找到类文件。您必须将每个jar都添加到类路径中,而不是每个jar。

顺便说一句,允许嵌套jar可能是一个坏主意:您最终会在每个项目中使用6或7个版本的commons-lang或log4j,因为许多库依赖于它们。

您可以使用One-jar或Fat Jar。如果你使用maven,你可以使用maven-assembly插件

取决于IDE…如果你使用的是Eclipse,那就非常简单了……点击属性->构建路径,然后添加库…

相关内容

  • 没有找到相关文章

最新更新