在可执行文件 .JAR 中组织库和资源

Organize libraries and resources in an executable .JAR

我想使用 Eclipse 重新组织可执行文件 .JAR 中的所有文件(资源、外部库和应用程序 .class 文件)。

我有:

My.JAR

> folder "com" for external library 1 (com.apple.***)

> folder "org" for external library 2 (org.javasypt.***)

> folder "main" (package)
    >> .class files

> folder "resources"
    >> all resources files (images, texts...)

> folder "META-INF"
    >> "MANIFEST.MF" file

我想要的:

My.JAR

> folder "main" 
    >> folder "resources"
        >>> all resources files

    >> folder "libraries"
        >>> external library 1 (com.apple.***)
        >>> external library 2 (org.javasypt.***)

    >> .class files

> folder "META-INF"
    >> "MANIFEST.MF" file

这个能拿到吗?谢谢!

不,JAR file specification 规定了特定的结构。您正在尝试混合针对人类的组织和针对运行时的组织,但这两个概念是截然不同的。无论如何,按照您认为合适的方式组织您的源代码,但您不能指望运行时 (JVM) 理解任何任意结构。这就是存在构建工具(gradle、maven、ant 等)以帮助准确生成 JAR 规范结构的原因。

请注意,在您的示例中,orgcom 并不是真正的文件夹,它们是包结构中的节点(级别)。您的 main 也一样 - 它只是一个包裹。

resources 是您唯一具有一定灵活性的东西,因为您可以随意命名,只要从中读取内容的代码知道期望的名称即可。

META-INF 和清单文件由规范规定,不能更改或重新定位。