在可执行文件 .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 规范结构的原因。
请注意,在您的示例中,org
和 com
并不是真正的文件夹,它们是包结构中的节点(级别)。您的 main
也一样 - 它只是一个包裹。
resources
是您唯一具有一定灵活性的东西,因为您可以随意命名,只要从中读取内容的代码知道期望的名称即可。
META-INF
和清单文件由规范规定,不能更改或重新定位。
我想使用 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 规范结构的原因。
请注意,在您的示例中,org
和 com
并不是真正的文件夹,它们是包结构中的节点(级别)。您的 main
也一样 - 它只是一个包裹。
resources
是您唯一具有一定灵活性的东西,因为您可以随意命名,只要从中读取内容的代码知道期望的名称即可。
META-INF
和清单文件由规范规定,不能更改或重新定位。