我已经创建了mytest.jar文件,库中包含了近30个库文件,还有jar。 是否有可能将所有的库jar放入mytest.jar中,以便我只需要分发一个jar? 可能是使用清单可以完成的吗? 谢谢。罐子里面的java库
回答
不开箱即用。但是,One-Jar提供了一个解决方案。它适用于独立应用程序,这是我认为你正在制作的。
如果您要制作小程序,One-Jar将无法使用。
使用标准Java类加载器无法从jars-inside-jar中加载类。但是可以使用自定义类加载器,例如UberJar可以工作。
maven shade plugin采取不同的方法。它将打开你所依赖的所有罐子,并将它们(连同你自己的班级)打包成一个大罐子。然后可以使用普通的类加载器。这更简单,也可以不使用jarjar。
需要特别小心,同时使用'maven树荫插件'或解开所有瓶子和重新打包为一体,因为两个罐子可能有公用文件文件,另一个罐子内容可能会被另一个覆盖 –
阴影插件允许重命名包装(即“阴影“)来避免这种情况 - 但是,你必须小心。 –
有人创建了这个包,这真是太神奇了。我曾经想过这么做,并且很高兴认识其他人创造它。 – djangofan
为此目的,通常使用一个罐子重新包装工具,如jarjar
。
@Lorenzo Heiko已经添加了什么,这里是链接:http://code.google.com/p/jarjar/请注意,这是一个Java约束,你可能会更好通过这些罐子分离和添加他们到类路径。 – Ayusman
- 1. 从命令行执行罐子里面的罐子
- 2. 在另一个罐子里面运行外部罐子
- 3. 从罐子里面的java文件调用方法
- 4. 在罐子里面运行两个类
- 5. Java“罐子”功能在哪里
- 6. 我怎么能从另一个罐子里面的shell脚本里面调用一个jar里面的java类
- 7. 从罐子里,调用java文件这就是罐外
- 8. Java中,罐子
- 9. Guice罐子里的Assisted类在哪里?
- 10. 哪里是restlet 2.1罐子
- 11. 的Java的HttpClient-4.1.2罐子
- 12. H2:无法从罐子里面的SQL文件初始化数据库模式
- 13. Java的Minecraft罐子扩展
- 14. 罐子的.java转换
- 15. 春:通过Java的罐子
- 16. Java的罐子运行
- 17. 将外部罐子从命令行打包到罐子里
- 18. 运行位于在一个罐子里是另一个罐子
- 19. Java目录中的文件夹在罐子里的目录
- 20. 骆驼 - 在罐子里使用豆子
- 21. 如何添加一个罐子库到另一个罐子库
- 22. 查找罐子里面的特定路径
- 23. JETTY:它的罐子里面嵌入了JSP
- 24. Deobfuscate Java,批量重命名在罐子里的类
- 25. Java程序在eclipse中的工作,但从罐子里
- 26. 修改罐子里的文件
- 27. Eclipse和Maven - 罐子里的资源
- 28. 的Maven在一个罐子里
- 29. 阅读罐子里的txt文件
- 30. 在罐子里的数据存储
可能的重复[是否有可能创建一个“超级”jar包含项目类和项目依赖项作为与自定义清单文件的罐子?](http://stackoverflow.com/questions/1832853/is-it - 可以创建超级jar包含项目类和专业版) – skaffman
拆分/重新打包API Jars可能会违反分发许可证。如果这是桌面应用程序,[Java Web Start](http://stackoverflow.com/tags/java-web-start/info)是解决启动应用程序的整个问题的更好方法。这是最终用户的“一键式”解决方案,甚至更好,它不仅能够根据用户需要提供额外的JARS服务器,还可以在任何更改时自动更新! –