2014-10-31 55 views
0

我有一个我已经构建了Netty库的ontop的包装器。创建库时的问题

我想包装导出为一个.jar所以当我把它添加到另一个项目,我可以使用它的功能。

.JAR文件在依赖项文件夹中有Netty.jar文件,但是当我尝试在我的项目中导入具有作为库的.jar文件的内容时,我无法导入任何netty函数。

当然,.JAR文件可以访问Netty.Jar的罚款。

有没有什么办法可以做到这一点,所以我不需要将我的.jar和netty.jar作为库,而只是让我的.jar文件共享netty.jar到项目中?


例子:

-|_My Project 
---|_MyLibrary.Jar 
-----| Netty.Jar 

这将意味着你只需要输入 'MyLibrary.Jar' 使用附带 'Netty.Jar'

或者特征我必须这样做吗


-|_My Project 
---| MyLibrary.Jar 
---| Netty.Jar 

回答

0

标准Java无法在Jar文件中加载Jar文件。所以你必须按照你提出的第二种方式来做到这一点,让两个图书馆彼此相邻。 您可以做的是在MyLibrary.jar中包含一个包含指向Netty.jar的类路径的清单。这样,您只需将MyLibrary.jar添加到类路径中,但不能同时添加两者。但是,两个jar文件都需要在文件系统上,而不是在类路径中。

+0

所以用户(如果有人想用这个)仍然必须下载Netty.jar,即使它已经“MyLibrary.Jar”里面? – Hobbyist 2014-10-31 09:01:33

+0

是的,至少与标准的Java。还有其他的类装载机,例如OneJar,这可能会有帮助,但我不会将它们用于库,只适用于独立应用程序。也看看这个问题:http://stackoverflow.com/questions/12357136/reference-jars-inside-a-jar – cello 2014-10-31 09:04:13

+0

什么是拖动,我猜另一种选择是使用我的Netty库的来源项目,而不是仅将.Jar作为库引用,然后将其全部构建到.Jar中,这是否会给我所期待的结果? – Hobbyist 2014-10-31 09:07:12